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