Showing posts with label script. Show all posts
Showing posts with label script. Show all posts

Tuesday, April 14, 2015

Instantiate a prefab

I keep having to look up how to instantiate a prefab.  This is an easier place for me to look for it.

Put this as a method variable

// C# 

public Transform prefabMovePath;

Once you have that method variable in your Unity script, then you will see this.
Simply drag and drop the prefab you want to the script to instantiate to the PrefabMovePath in unity.


Since I'll probably forget that too, the way you create a prefab is pretty simple, build it up in the hierarchy/scene, then drag it from the hierarchy to the project.  It will have a blue cube icon.

Use this Instantiate code to create an instance of that prefab.

private Transform curMove;
void Start() 
{
    curMove = (Transform)Instantiate(prefabMovePath, new Vector3(0, 0, 0), Quaternion.identity);
}

Then, since that prefab has a script I need access to, use this when wanting to call code in the script that prefab is attached to.

        MovePath mp = curMove.GetComponent();
        mp.rotateLeft();

Thursday, January 29, 2015

Unity2D script to programatcally add a sprite

I'm create a grid of tiles. The tiles are sprites and I'm laying them out programmatically. Here is the code to generate one of the tiles.

public Sprite tile_plain; // assign this in unity by dragging a sprite to it void Start() { GameObject tile = new GameObject(); tile.AddComponent(); tile.GetComponent().sprite = tile_plain; tile.transform.position = new Vector2((i * tile_plain.rect.width)/tile_plain.pixelsPerUnit, 5f); }

Wednesday, January 14, 2015

Unity script referencing



I wanted my keyboard input script to retrieve a value from a grid generator script so it knew how far to move one of my game objects. It took me a while to figure it out even though it's simple so I figure it's best to leave myself a bread crumb so I don't have to search so much next time.

//this is how you get a reference and value out of another script
scriptholder = GameObject.Find("EmptyScriptHolder");
GridManager script = scriptholder.GetComponent<GridManager>();
print("Grid gap =" + script.stepsize);


This shows how to get a reference to the actual script, in this case it's my EmptyObject I use to hold scripts that are not associated with actual GameObjects.  I call it EmptyScriptHolder.  I then get the reference to the GridManager script.  This is the actual type name of the script.  Within that script is a method variable called stepsize.  Overall it's very simple to get a value out of another script once you know how to do it.

This site was very helpful even though it's documentation from a few versions back.
http://docs.unity3d.com/412/Documentation/ScriptReference/index.Accessing_Other_Game_Objects.html