เป็นไปได้ไหมที่จะรับ gameobject ลูกที่ซ้อนกันจากพาเรนต์พร้อมสคริปต์?

เป็นไปได้ไหมที่จะรับ gameobject Nested Child จาก Parent ?

Map Gameobject มีลักษณะดังนี้:

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

ตัวอย่างเช่น Iam ใช้รหัสนี้:

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;

เมื่อฉันรันโค้ดฉันได้รับข้อผิดพลาด:

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

หมายเหตุ : ฉันสามารถเข้าถึงได้จนถึง gameobject ( 1 ) gameobject ( ItemIcon ) มีข้อผิดพลาด

ฉันจะแก้ไขได้อย่างไร?


person Dennis Liu    schedule 10.08.2016    source แหล่งที่มา


คำตอบ (1)


แทนที่ก้อนของคุณด้วยสิ่งนี้:

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;

มันจะบอกคุณว่าวัตถุใดที่ไม่พบ ฉันพนันได้เลยว่ามันคือ FindGameObjectWithTag คุณแน่ใจหรือว่าวัตถุนี้มีแท็กที่ตรงกันทุกประการ

หรืออีกทางหนึ่งก็ใช้:

var ico = GameObject.FindGameObjectWithTag("ListProcessItem1").transform.FindChild("item1/1/ItemIcon").GetComponent<WhateverYouNeed>();
person izeed    schedule 10.08.2016
comment
ใช่ @izeed ฉันพลาดอะไรบางอย่างไป gameobject ไม่เริ่มทำงานที่ ListProcess แต่เริ่มต้นที่ item1 =› ListProcessItem1 ขอบคุณ - person Dennis Liu; 10.08.2016