UnityException:声明变量时不允许调用此函数

UnityException: You are not allowed to call this function when declaring a variable

我正在尝试实例化一个 GameObject 并保留对它的引用,但由于某种原因,即使实例化仍在进行,每次实例化时都会出现上述错误。它指向我的代码行是这样的: GameObject next = Instantiate(prefab); 就像我说的,实例化仍然正常工作,但为了稳定性,我想摆脱这个错误。 Unity 想从我这里得到什么?

Instantiate() return 一个 Object,你需要明确地把它转换成 GameObject

试试这个:

GameObject next = (GameObject)Instantiate(prefab);

更多信息:

Instantiate()签名:public static Object Instantiate(Object original)

这清楚地表明 return 类型是 Object 而不是 Gameobject

参考

详情请参考this

Unity Instantiate 方法的 return 类型为 Object。如果要将预制件存储在 GameObject 变量中,则需要将预制件实例化为 GameObject

假设您使用的是 C#,您可以实例化一个 GameObject 并将其存储在一个变量中,如下所示:

GameObject myGameObject = Instantiate(prefab) as GameObject;

你们都错了。 粗略地说,实例化returns

你输入的内容。

如果你有这个...

   public GameObject modelDinosaur;

你确实可以拥有这个

   GameObject nu = Instantiate(modelDinosaur);

不用投了。 (想投就投吧。)

是的,对于预制件,完全按照上面每个人告诉你的去做

  GameObject nu = (GameObject)Instantiate(yourPrefab);

顺便说一句,使用“nu”(如“new”)作为临时变量是惯用的。 (“new”当然是关键字,不能用。)

最常见的是你会做这些事情..

   GameObject nu = Instantiate(modelDinosaur);
   YourDinoScript nuD = nu.GetComponent<YourDinoScript>();
   yourDinoList.Add(nuD);
   nu.name = "dynamic " + counter;
   nuT = nu.transform;
   nuT = blah blah
   nuT = your holder
   nuT = logic position
   etc etc

PS:关于Unity的doco,你还不如看看醉酒聊天机器人的胡言乱语。算了。