我目前正在开发一款迷你游戏,围绕数字随机化和分数分配,具体取决于在这种情况下显示的数字是否是'x'的倍数。
但是,我有一个问题,因为出于某种原因,当玩家点击随机化时,它会随机几次完全抛出我的分数系统。
到目前为止,我试图通过使用:
来解决这个问题yield return new WaitForEndOfFrame();
然而,事实证明这是徒劳的,因为它没有帮助。
如果你们中的任何人能够阐明为什么会发生这种情况,我们将非常感激。
正在使用的代码
void Awake ()
{
randomNumber = Random.Range (0, 36);
}
void Start()
{
mycam = Camera.main;
}
void FixedUpdate()
{
StartCoroutine(Selection ());
thisAnswer.text = randomNumber.ToString ();
}
// Update is called once per frame
void Update ()
{
if (CorrectCount == 5)
{
PlayerPrefs.SetInt ("MiniScore", miniScore);
Destroy (GameObject.Find ("Killswitch"));
}
}
IEnumerator Selection ()
{
Ray ray = mycam.ScreenPointToRay (Input.mousePosition);
if (Input.GetKey (KeyCode.Mouse0))
{
if (Physics.Raycast (ray, out hit))
{
if(hit.transform.tag == "answer")
{
if (System.Convert.ToInt32(thisAnswer.text) % 3 == 0)
{
miniScore = miniScore + 100;
CorrectCount = CorrectCount + 1;
yield return new WaitForEndOfFrame();
randomNumber = Random.Range (0, 36);
Debug.Log (miniScore.ToString());
}
else if (System.Convert.ToInt32(thisAnswer.text) % 3 != 0)
{
if (miniScore > 50)
{
miniScore = miniScore - 50;
}
else if (miniScore < 50)
{
miniScore = 0;
}
Debug.Log (miniScore.ToString ());
yield return new WaitForEndOfFrame();
randomNumber = Random.Range (0, 36);
}
}
}
}
}
答案 0 :(得分:2)
我怀疑这里发生的是这行代码
if (Input.GetKey (KeyCode.Mouse0))
一旦用户按下鼠标按钮,就会执行几次 - 只要按钮关闭,GetKey就会返回true(这将是几帧 - 所以你可以试试
if (Input.GetKeyUp (KeyCode.Mouse0))
只有释放鼠标按钮时才会触发一次。
结帐