2013-04-23 12 views
7

Ho un oggetto di gioco che desidero attivare a causa di una determinata condizione. Ho dato un tag univoco e ho provato a utilizzare GameObject.FindObjectWithTag("Tag name"). Da quello che posso dire, questo metodo troverà solo oggetti di gioco attivi nella scena e non inattivi.trovare gameobject inattivo per tag in unity3d

C'è un metodo che posso chiamare che cercherà anche oggetti di gioco inattivi? (Preferibilmente cercando per tag).

Grazie!

risposta

12

Dopo alcune ricerche sembra che non ci sia modo di trovare un oggetto di gioco inattivo per tag.

soluzioni esistono tuttavia per accedere gameobjects inattive:

1 - Store oggetti di gioco inattive in un array se è necessario riattivarli successivamente (si applica solo a gioco oggetti inattivati ​​in fase di esecuzione).

2 - Non disattivare l'oggetto del gioco, è sufficiente disattivare i componenti che si desidera disattivare. Se desideri far scomparire l'oggetto, disattiva il renderer. Se si tratta di uno script specifico, disattivare lo script, ecc.

Questa soluzione consente di trovare ancora un oggetto di gioco in base al nome del tag.

+0

marchio come giusto, perché è la giusta risposta in effetti. – Heisenbug

+0

Certo, è giusto. Impossibile trovare l'oggetto inattivo. Deve memorizzare riferimento. –

+0

Questo è sbagliato. È possibile ottenere oggetti inattivi. Vedi il commento qui sotto. RTFM. – Alex

1

FindObjectsOfTypeAll trova inattivo, può anche trovare prefabbricati e cose che non si cercano, quindi bisogna stare attenti.

+0

Sì, ed è molto lento – RedOrav

5

cose che possono trovare inattivo gameObjects:

transform.Find() or transform.FindChild() 
transform.GetComponentsInChildren<Component>(true) 

Resources.FindObjectsOfTypeAll<Component>() 

For more details.

+0

@kleopatra: Sry. ... terrò questo a mente. :) – Vineet

+0

Mentre questo può trovare oggetti inattivi, non troverà oggetti per tag, che era quello che stavo effettivamente chiedendo. – kUr4m4

+0

Non utilizzare 'Resources.FindObjectsOfTypeAll ()' a meno che tu non sappia cosa stai facendo. Ciò influisce su tutte le risorse, inclusi i prefabbricati. Ciò significa che dovrai apportare ** modifiche permanenti ** ai tuoi file e qualsiasi cosa al di fuori della scena, anche dopo aver smesso di giocare. –