如何在初始化时添加组件到GameObjects ?



我想使用这个代码

GameObject mapOutline = new GameObject();
LineRenderer top = mapOutline.AddComponent<LineRenderer>();
LineRenderer right = mapOutline.AddComponent<LineRenderer>();
LineRenderer bottom = mapOutline.AddComponent<LineRenderer>();
LineRenderer left = mapOutline.AddComponent<LineRenderer>();

然而,我不能在初始化游戏对象的同时添加这些组件,我得到错误"字段初始化器不能引用非静态字段,方法或属性"ChooseGameMode.mapOutline";所以是否存在一种方法能够使用这些组件去创造游戏对象?我知道如何通过在unity编辑器中已经存在对象并在那里添加组件来做到这一点,但我宁愿在代码中创建它。

正如我在评论中提到的,我相信当您试图在类的字段初始化器或构造函数中调用非线程安全的方法时,就会发生您所描述的错误。更具体地说,您试图调用的方法在您尝试调用它们时还不存在。要解决这个问题,只需将正在进行的方法调用移动到函数中。您的代码可以像这样:

public class ChooseGameMode : MonoBehaviour
{
GameObject mapOutline;
LineRenderer top, right, bottom, left;
private void Awake()
{
mapOutline = new GameObject();
top = mapOutline.AddComponent<LineRenderer>();
right = mapOutline.AddComponent<LineRenderer>();
bottom = mapOutline.AddComponent<LineRenderer>();
left = mapOutline.AddComponent<LineRenderer>();
}
}

最新更新