我怎样才能让孩子的孙子们团结起来
这是我的阶层结构
我尝试这样做
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;
}
计数不起作用很奇怪。
答案 0 :(得分:3)
由于脚本已附加到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);
}
答案 1 :(得分:0)
我不确定您想要的是什么,所以我假设您想要做的是:如果您将层次结构想象成一棵树,您想找到树的每片叶子吗?我们可以通过典型的图形搜索来做到这一点。我在这里使用广度优先搜索。
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;
}
这是您要实现的目标吗?