Apakah mungkin untuk mendapatkan anak bersarang objek game dari induk dengan skrip?

Apakah mungkin untuk mendapatkan objek game Nested Child dari Parent?

Objek Map Gamenya seperti di bawah ini :

ListProcess (ListProcessItem1) => item1 => 1 => ItemIcon

Misalnya saya menggunakan kode ini:

itemslot = GameObject.FindGameObjectWithTag ("ListProcessItem1").gameObject;
GameObject item = itemslot.gameObject.transform.GetChild(0).gameObject;
GameObject child = item.gameObject.transform.GetChild(0).gameObject;
GameObject sitemImage = child.gameObject.transform.GetChild(0).gameObject;

Ketika saya menjalankan kode saya mendapat kesalahan:

UnityException: Transform child out of bounds
LakeMainProcess.generatePrize1 () (at Assets/script/fishing/LakeMainProcess.cs:48)
LakeMainProcess.Start () (at Assets/script/fishing/LakeMainProcess.cs:21)

Catatan : Saya hanya dapat menjangkau hingga gameobject ( 1 ) . Objek permainan (ItemIcon) Terjadi kesalahan.

Bagaimana cara memperbaikinya?


person Dennis Liu    schedule 10.08.2016    source sumber


Jawaban (1)


Ganti potongan Anda dengan ini:

Debug.Log("A " + GameObject.FindGameObjectWithTag ("ListProcessItem1") == null);
var itemslot = GameObject.FindGameObjectWithTag ("ListProcessItem1").gameObject;

Debug.Log("B " + itemslot.gameObject.transform.GetChild(0) == null);
GameObject item = itemslot.gameObject.transform.GetChild(0).gameObject;

Debug.Log("C " + item.gameObject.transform.GetChild(0) == null);
GameObject child = item.gameObject.transform.GetChild(0).gameObject;

Debug.Log("D " + child.gameObject.transform.GetChild(0) == null);
GameObject sitemImage = child.gameObject.transform.GetChild(0).gameObject;

Ini akan memberi tahu Anda objek apa yang tidak dapat ditemukan. Saya yakin itu FindGameObjectWithTag, apakah Anda yakin objek ini memiliki tag persis seperti ini?

Sebagai alternatif dan lebih mudahnya gunakan:

var ico = GameObject.FindGameObjectWithTag("ListProcessItem1").transform.FindChild("item1/1/ItemIcon").GetComponent<WhateverYouNeed>();
person izeed    schedule 10.08.2016
comment
Ya @ized, saya melewatkan sesuatu. Objek game tidak dimulai di ListProcess. Tapi itu dimulai dari item1 =› ListProcessItem1. Terima kasih. - person Dennis Liu; 10.08.2016