条件满足时代码不执行

Code not executing when condition is accomplished

我正在尝试通过按代码更改那些转换父级来组织层次结构中的一些转换。我有这个功能:

private GameObject[,] SpawnCullingGroups(GameObject[,] cG)
     {
         for(int i = 0; i < cG.GetLength(0); i++)
         {
             for (int j = 0; j < cG.GetLength(1); j++)
             {
                 GameObject c = Instantiate(Culler, new Vector3(i * 32f,0,j * 32f), Quaternion.identity) as GameObject;
                 c.name = "CoullingGroup";
                 cG[i,j] = c;
                 foreach (Transform child in GameObject.Find("MapContainer").transform)
                 {
                     if (child.position.x >= c.transform.position.x && child.position.x <= (c.transform.position.x + 32)
                         && child.position.z >= c.transform.position.z && child.position.z <= c.transform.position.z + 32) {
                         child.parent = cG [i, j].transform;
                     }
                 }
             }
         }

         return cG;
     }

有时 if 条件会触发并更改它的父级,但对于某些转换它不会起作用。 我最终得到了一些奇怪的模式:

所有该扇区 (10 * 10) 都应该是绿色的(该区域中 CoullingGroup 的子级)。 网格是完美的,这意味着每个块的长度为 3.2 个单位,宽度为 3.2 个单位,并且它们在 x 轴和 z 轴上相隔 3.2 个单位。

非CullingGroup子级的在条件范围内。 我错过了什么吗?

在@andeart 的帮助下,我们通过将循环更改为以下内容解决了这个问题: foreach(在 GameObject.Find("MapContainer").GetComponentsInChildren<Transform>())

中转换 child

我们还添加了另一段代码来避免 MapContainer 被删除。

if (child.name == "MapContainer") {
    continue;
}