Unity3D Game Engine – Get Objects with Find.name / FindWithTag / FindGameObjectsWithTag

Get Objects – Find.name

Restituisce un oggetto in base al nome che ha in Hierarchy

1. Create inside Hierarchy:

– parent ->’Arm’ (Cube) braccio
– child of Arm ->’Forearm’ (Cube) avambraccio
– child of Forearm ->’Hand’ (Cube) mano

– GameController(Empty Object) -> attach GameController.JS

2. GameController.JS:


#pragma strict

        // Devo associare i Gameobject a delle variabili
        // E' meglio private perchè non devo modificarla in Inspector
	private var hand : GameObject;
	private var arm : GameObject;

function Start () {
        // Hand non ha lo slash / all'inizio perchè ha un oggetto parent
	hand = GameObject.Find("Hand");
	// Arm ha lo slash / all'inizio perchè non ha un oggetto parent
	arm = GameObject.Find("/Arm");
}

function Update () {
        // Ruoto i singoli elementi
	hand.transform.Rotate(0, 100 * 10* Time.deltaTime, 0);
	arm.transform.Rotate(0, 100 * Time.deltaTime, 0);

}

Official docs:
GameObject.Find: http://docs.unity3d.com/ScriptReference/GameObject.Find.html

Get Objects – GameObject.FindWithTag

Restituisce SOLO L’ULTIMO OGGETTO a cui è stato assegnato un determinato tag.

1. Create inside Hierarchy:

– Hand1′ (Cube) -> Inspector assign Tag ‘MyHand’

– Hand2 (Cube) -> Inspector assign Tag ‘MyHand’

– GameController(Empty Object) -> attach GameController.JS

2. GameController.JS:


#pragma strict

// definisco la variabile per ottenere GameObject
private var hand : GameObject;

function Start () {
    // inserisco in una variabile l'oggetto con tag 'MyHand'
    // ritorna SOLO l'ultimo oggetto a cui è stato assegnato il tag
    hand =  GameObject.FindWithTag ("MyHand");
    
    // se l'oggetto con tag non esiste restituisce un messaggio di errore
    if (hand == null)
    {
        Debug.Log ("Cannot find 'MyHand'");
    }
}

function Update () {
        // Ruota
	hand.transform.Rotate(0, 100 * 10* Time.deltaTime, 0);

}

3. Play, ruota SOLO L’ULTIMO OGGETTO CON IL TAG

Official docs:
http://docs.unity3d.com/ScriptReference/GameObject.FindWithTag.html

Get Objects – GameObject.FindGameObjectsWithTag

Restituisce in un array di oggetti, TUTTI GLI OGGETTI a cui è stato assegnato un determinato tag.

1. Create inside Hierarchy:

– Hand1′ (Cube) -> Inspector assign Tag ‘MyHand’

– Hand2 (Cube) -> Inspector assign Tag ‘MyHand’

– GameController(Empty Object) -> attach GameController.JS

2. GameController.JS:


#pragma strict

// definisco la variabile per ottenere GameObject
// è un array di oggetti perchè potrebbero essere più di uno
var hands : GameObject[];

function Start () {
    // inserisco in una variabile l'oggetto con tag 'MyHand'
    // ritorna TUTTI gli oggetti a cui è stato assegnato il tag
    hands =  GameObject.FindGameObjectsWithTag ("MyHand");
}

function Update () {
    // Ruota gli oggetti contenuti nell'array hands[]
    hands[0].transform.Rotate(Vector3.back, 10 * Time.deltaTime);
    hands[1].transform.Rotate(Vector3.back, 10 * Time.deltaTime);
}

3. Play, ruotano TUTTI GLI OGGETTI CON IL TAG

Official docs:
http://docs.unity3d.com/ScriptReference/GameObject.FindGameObjectsWithTag.html