首页 > 解决方案 > 无法在此范围内声明,因为该名称在封闭的本地范围内使用

问题描述

我希望能够实例化一个对象,然后给它的所有孩子一个脚本

     public void buildTownHall()
 {
     GameObject TownHallBuilding = Instantiate(townhall, pos, Quaternion.Euler(new Vector3(0, 0, 0)));

     foreach (Transform TownHallBuilding in transform)
     {
         TownHallBuilding.gameObject.AddComponent<ChangeColorChild>();
     }

     TownHallBuilding.AddComponent<ChangeColor>();
     TownHallBuilding.SetActive(true);
 }

但我不断收到标题中的错误消息。

标签: c#unity3d

解决方案


GameObject TownHallBuilding = Instantiate(... // TownHallBuilding #1
foreach (Transform TownHallBuilding in transform) // TownHallBuilding  #2 

你不能两者兼得。

顺便提一句。局部变量通常以普通字母(不是大写字母)开头。

也许 foreach 应该是:

foreach (Transform t in transform)
{
   // Use t
}

推荐阅读