Unity - 使用协同程序管理状态,不会在循环时确认

时间:2016-01-19 09:58:50

标签: unity3d coroutine

我只是尝试进行基本的状态管理,这样程序不会直接运行,而是等待玩家的某种响应。现在它只是跳过while循环并且“Test1”行永远不会被打印出来,它直接进入“Proceeding”。我确实有一些其他的脚本正在运行,但没有一个正在使用更新循环并且不会影响这个。

这是我在这里发表的第一篇文章,所以请告知我是否应该了解政策等方面。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class GameManager : MonoBehaviour {

    public static int turn;
    public float turnDelay = 1f;
    private WaitForSeconds turnWait;
    private bool turnOver = false;

    void Start ()
    {
        turnWait = new WaitForSeconds(turnDelay);
        turn = 1;

        ResetAndSetup();
        Debug.Log("Starting");
        StartCoroutine(GameLoop());
    }

    IEnumerator GameLoop()
    {

        yield return StartCoroutine(RoundFirstPlayer());
        Debug.Log("Proceeding");
        yield return StartCoroutine(RoundSecondPlayer());
    }

    private IEnumerator RoundFirstPlayer()
    {

        while (turnOver = false)
        {   
            if (Input.GetKey(KeyCode.Space))
            {
                turnOver = true;
                Debug.Log("Test1");
            }
            yield return null;
        }   

        Debug.Log("Test2");
    }

    private IEnumerator RoundSecondPlayer()
    {

        yield return null;

    }

    void ResetAndSetup()
    {
        ColumnManager.ResetColumns();
    }

}

1 个答案:

答案 0 :(得分:1)

你犯了一个小错误:

相反

while (turnOver = false)

使用

 while (!turnOver)

while (turnOver == false)