Diskuze: Unity - jeden script pro dva GameObjecty
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Ono to GameObject.Find prohledává celou scénu (všechny aktivní), takže vždy vrátí jen jeden objekt. Pokud chceš jen child, tak pak by mělo fungovat transform.find. Nebo můžeš tu Text komponentu přiřadit přímo v inspektoru.
public class Script : MonoBehaviour
{
[SerializeField]
private Text _textLabelText;
private void Start()
{
_textLabelText.text = "Nový text";
}
}
GameObject.Find(string menoObjektu) funguje tak, že prechádza hierarchiu (štruktúru) scény, až kým nenájde gameobject s menom menoObjektu.
Čiže v tvojom prípade prechádza metóda hierarchiu scény, nájde Player1, pod ním child gameobject s menom textLabel - voilá, má svoj výsledok a vráti ti ten jeden gameobject, ďalej už nehľadá.
Neviem, čo s tými textLabelmi plánuješ robiť a ako chceš, aby sa ti to správalo, ale to, čo chceš použiť je pravdepodobne GetComponentInChildren<Text>() v skripte, ktorý máš attachnutý ku hráčom. Tým sa úplne vyhneš medzikroku v podobe hľadania gameobjectov.
Mimochodom, hľadať gameobject (či dokonca viac gameobjectov, aj keď to sa ani nedá, ako si sám zistil) pomocou jeho mena je asi najhorší spôsob, aký môžeš využiť. Oveľa rýchlejšie je vyhľadávanie pomocou tagu (teda metódy FindWithTag pre jeden a FindGameObjectsWithTag pre viac objektov). Keď už, tak pre vyhľadávanie v child objektoch podľa mena je rýchlejší aj Transform.Find, ten aspoň neprehľadáva celú scénu, len potomkov tvojho objektu.
GameObject.Find
Diskusia ad Find vs FindWithTag
Transform.Find
Díky, nakonec jsem použil transform.Find a už to funguje. Jen mě zarazilo, že to hledá jen v přímých potomcích, ale poradil jsem si.
Zobrazeno 4 zpráv z 4.