0
在Unity C#中,我使用協程在x秒後使用「yield return new WaitForSeconds(1.5f)」行在屏幕上顯示一個簡單模式,但在第一次調用它之後,它將isPlayerTurn從false更改爲true。協程爲什麼更改變量的值?
void Update() {
if (!isPlayerTurn) {
pattern.Add (Random.Range (1, 5));
Debug.Log (isPlayerTurn);
StartCoroutine(ShowPattern());
isPlayerTurn = true;
}
pointGUI.GetComponent<UnityEngine.UI.Text>().text = "Points: " + playerPoints;
}
private IEnumerator ShowPattern() {
Debug.Log (isPlayerTurn);
yield return new WaitForSeconds (1.5f);
Debug.Log (isPlayerTurn);
// etc
}
日誌的輸出是
False
False
True
是否有原因的行爲或者是一個邏輯錯誤?
*它*不會改變'isPlayerTurn',*你*的變化'isPlayerTurn'。改變它的代碼就在你的問題中。你能否通過解釋你期望的行爲來澄清,爲什麼? – hvd
@hvd'isPlayerTurn'的值在該yield之後仍然應該是'False',因爲它通過'ShowPattern()'函數是必需的,並且只有在ShowPattern()完成執行後才能成爲True。部分)。 –
我不是問爲什麼你想要它是'假',我問你爲什麼認爲當前的代碼會保持'假'。 – hvd