我正在尝试实例化一个GameObject并保留对它的引用但由于某种原因,每次实例化时都会出现上述错误,即使实例化仍然存在。它指向我的代码行是:GameObject next = Instantiate(prefab);
就像我说的,实例化仍然可以正常工作,但为了稳定,我想摆脱这个错误。 Unity想从我这里得到什么?
答案 0 :(得分:4)
你错了。 粗略地说,实例化返回
如果你有这个......
public GameObject modelDinosaur;
你确实可以拥有这个
GameObject nu = Instantiate(modelDinosaur);
无需施法。 (如果你愿意,可以施放。)
是的,对于预制件,请完全按照每个人的说法进行操作
GameObject nu = (GameObject)Instantiate(yourPrefab);
BTW使用“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,你不妨阅读醉酒聊天机器人的狂言。算了吧。
答案 1 :(得分:2)
Instantiate()
返回Object
,您需要明确地将其投放到GameObject
。
试试这个:
GameObject next = (GameObject)Instantiate(prefab);
更多信息:
Instantiate()
签名:public static Object Instantiate(Object original)
这清楚地表明返回类型为Object
而非Gameobject
<强>参考强>
有关详细信息,请参阅this
答案 2 :(得分:2)
Unity Instantiate
方法的返回类型为Object
。如果要将预制件存储在GameObject
变量中,则需要将预制件实例化为GameObject
。
假设您正在使用C#,您可以实例化GameObject并将其存储在如下变量中:
GameObject myGameObject = Instantiate(prefab) as GameObject;