我用实例化的对象打了一下墙。我需要引擎做的是产生三个预制件,然后在特定时间将它们翻转过来。但是,我一直无法让它发挥作用。产生的代码可以工作但是当我尝试添加更多来操作预制件时,它只会给我带来大量的错误。 spawn脚本位于void Start()内,而另一个脚本位于void Update()
中Spawn脚本:
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);
}
答案 0 :(得分:0)
错误很可能在这里:
if (turnA == true) {
...
我认为您在访问之前没有初始化turnA
。也许你有一些分支代码,而不是每个分支都为该变量赋值。
关于编码风格:
if (turnA)
相当于if (turnA == true)
,但更清晰,更传统。
答案 1 :(得分:-1)
通过阅读评论,您只需要正确引用这些值。有几种方法可以做到这一点,静态可能是最快最容易的。
将生成的脚本中的卡片设置为public static GameObject cardAOne;
,
然后使用SpawnScript.cardAOne.transform.position
从移动脚本中调用它们。
您还可以在移动文件的顶部放置一个公共SpawnScript,然后可以从Unity中拖放检查器中的实例。