[英]Unity C# Inheritance get value from child class to parent class then to child class
[英]How to get grandchildren from child(c# UNITY)
我怎樣才能讓孩子的孫子們團結在一起
這是我的階層結構
我嘗試這樣做
public Transform[] trans;
trans = GetComponentsInChildren<Transform>();
foreach(Transform gc in trans)
{
//this could only get the first layer.
}
我的腳本是在ScrollView
GameObject中
編輯:
Transform grid_gametable;
// Use this for initialization
void Start()
{
sp = sv.GetComponent<SpringPanel>();
if (sp == null) sp = sv.AddComponent<SpringPanel>();
sp.target.x = 0;
sp.target.y = 0;
sp.target.z = 0;
StartCoroutine("ItemCheck");
}
IEnumerator ItemCheck()
{
grid_gametable = transform.Find("Grid_gametable");
for (int i = 0; i < grid_gametable.childCount; i++)
{
Debug.Log("How many: " + grid_gametable);
}
yield return null;
}
計數不起作用很奇怪。
由於腳本已附加到ScrollView,因此可以使用transform.Find
首先找到“ Grid_gametable”子級。 此后,遍歷該“ grid_gametable”子對象以獲取其所有“ prefab_Gametable_baccarat”子對象。
Transform grid_gametable = transform.Find("Grid_gametable");
foreach (Transform gc in grid_gametable)
{
Debug.Log(gc.name);
}
另外,“ grid_gametable”是“ ScrollView”的第一個子級。 您還可以使用transform.GetChild(0)
而不是transform.Find
查找“ grid_gametable”,然后在其子級上循環。
Transform grid_gametable = transform.GetChild(0);
foreach (Transform gc in grid_gametable)
{
Debug.Log(gc.name);
}
我不完全了解您想要的內容,因此我將假設您要執行的操作是:如果您將層次結構想象成一棵樹,那么您想找到樹的每一片葉子嗎? 我們可以通過典型的圖形搜索來做到這一點。 我在這里使用廣度優先搜索。
public static List<Transform> FindAllLeaves(Transform transform)
{
var transforms = new List<Transform>();
var queue = new Queue<Transform>();
queue.Enqueue(transform);
while(queue.Count > 0)
{
var t = queue.Dequeue();
if(transform.childCount > 0)
{
foreach (Transform child in t.GetComponentsInChildren<Transform>())
{
queue.Enqueue(child);
}
} else
{
transforms.Add(t);
}
}
return transforms;
}
這是您要達到的目標嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.