【发布时间】:2015-10-19 23:51:22
【问题描述】:
我遇到了一些实例化对象的问题。我需要引擎做的是生成三个预制件,然后在特定时间将它们翻转过来。但是,我一直无法让它工作。生成代码有效,但是当我尝试添加更多来操作预制件时,它只会给我带来很多错误。 spawn 脚本位于 void Start() 中,而另一个脚本位于 void Update() 中
生成脚本:
cardAOne = Instantiate(CardDisplayer.cardList[Shuffle.playerAdeck[0]], new Vector3 (xPosition, yPosition, (zPosition + 3)), Quaternion.Euler(xRotation, yRotation, zRotation)) as GameObject;
cardATwo = Instantiate(CardDisplayer.cardList[Shuffle.playerAdeck[1]], new Vector3 (xPosition, yPosition, (zPosition)), Quaternion.Euler(xRotation, yRotation, zRotation))as GameObject;
cardAThree = Instantiate(CardDisplayer.cardList[Shuffle.playerAdeck[2]], new Vector3 (xPosition, yPosition, (zPosition - 3)), Quaternion.Euler(xRotation, yRotation, zRotation))as GameObject;
cardBOne = Instantiate(CardDisplayer.cardList[Shuffle.playerBdeck[0]], new Vector3 ((0 - xPosition), yPosition, (zPosition + 3)), Quaternion.Euler(xRotation, (0 - yRotation), zRotation))as GameObject;
cardBTwo = Instantiate(CardDisplayer.cardList[Shuffle.playerBdeck[1]], new Vector3 ((0 - xPosition), yPosition, (zPosition)), Quaternion.Euler(xRotation, (0 - yRotation), zRotation))as GameObject;
cardBThree = Instantiate(CardDisplayer.cardList[Shuffle.playerBdeck[2]], new Vector3 ((0 - xPosition), yPosition, (zPosition - 3)), Quaternion.Euler(xRotation, (0 - yRotation), zRotation))as GameObject;
运动脚本:
if (turnA == true) {
cardAOne.transform.localRotation = Quaternion.Euler(0,0,180);
cardATwo.transform.localRotation = Quaternion.Euler(0,0,180);
cardAThree.transform.localRotation = Quaternion.Euler(0,0,180);
}
【问题讨论】:
-
错误信息在哪里?
-
“对象引用未设置为对象的实例”(移动脚本的第一行)
-
那么有两个单独的脚本,您是否在移动脚本中为您的对象分配了值?否则,您将尝试访问 null 的内容。
-
那么我该如何引用这些实例呢?我认为这是这样做的方法(或者至少这是似乎没有错误的唯一方法)并且它的工作原理是它正确显示了实例
-
您能否展示更多源代码,因为它非常令人困惑。您在第一次回答时说脚本位于层次结构中,但我们如何才能弄清楚呢?此外,这并不是因为父母知道孩子会实例化它..
标签: c# unity3d instantiation