我想创建一个游戏,其中所有的瓷砖必须旋转到正确的位置。我有15个瓷砖与脚本附加,在每次点击旋转他们90度。我可以检测到每个瓷砖何时都在正确的位置,但我所做的是检测所有15个瓷砖何时都在正确的位置。
这是我的舞台截图
https://www.dropbox.com/s/9ag4ly2bil1mzf1/Untitled-1.jpg?dl=0
我在想,我可以创建一个空的游戏对象,并附加一个新的脚本与代码,以获得每个瓷砖的值,并检查是否所有都是真的(在正确的位置)。
以下是我的旋转脚本的基本代码
using UnityEngine;
using System.Collections;
public class rotate : MonoBehaviour {
public float rotationAnswer;
// Use this for initialization
void Start() {}
// Update is called once per frame
void Update() {}
float rotationValue = 0;
void OnMouseDown(){
transform.Rotate(Vector3.up * 90);
rotationValue = transform.rotation.eulerAngles.y;
Debug.Log ( rotationValue );
if ( rotationValue == rotationAnswer)
{
Debug.Log ( "Correct" );
switch (this.name )
{
case "tile1":
}
Debug.Log ( GameObject.Find("GameComplete").GetComponent<TileGameComplete>().totalCorrectTiles ))
} else {
Debug.Log ( "Wrong" );
}
}
}
以下是我用于检测和完整游戏脚本的基本代码
using UnityEngine;
using System.Collections;
public class TileGameComplete : MonoBehaviour {
public int currentCorrectTiles = 0;
public bool tile1 = false;
public bool tile2 = false;
public int totalCorrectTiles = 15;
// Use this for initialization
void Update()
{
GameObject.Find("Tile1").GetComponent<rotate>().done
if (tile1 && tile2)
{
Debug.Log ("You've won");
}
}
}
你将如何在C#中解决这个问题。谢谢:)
发布于 2015-03-28 05:03:13
保留在级别开始时设置为零的共享或静态变量。当形状被移入正确的旋转时,计数加一,如果形状移出正确的旋转,则从计数中减一。当计数等于15时,谜题就解开了。
发布于 2015-03-28 00:38:57
我正在工作,现在不能访问Unity,所以不能给你代码,但是如果你在你的场景中创建了另一个(空) GameObject的所有15个tiles的孩子,那么你可以访问那个父对象的孩子集合,并通过迭代来检查他们是否都被正确地旋转了。
发布于 2017-12-07 09:27:18
@Agumander有一个很好的答案,但就个人而言,我更喜欢保持逻辑简单。我建议创建一个可以通过公共静态列表或GameObject.find(...)访问所有15个磁贴的GameController。这样你就不需要在每次游戏更新时检查列表15次了。游戏玩家只需要做他们自己的工作(旋转),游戏控制器将决定结束/重新开始游戏的逻辑
https://stackoverflow.com/questions/29305543
复制相似问题