簡體   English   中英

如何從孩子那里獲得孫子(C#UNITY)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM