每當使用Update()方法如下:調試日誌消息()的代碼大塊,僅在此之後完成時,使用更新的執行之前
void Update() {
if (Input.GetMouseButtonDown(0) && useRandomSeed) {
Debug.Log("Generating New Map...");
GenerateMap();
Debug.Log("New Map Generated!");
}
}
控制檯的輸出將推動(可視地)同時輸出第一條消息和第二條消息。而GenerateMap()
則先執行。 GenerateMap()
是一種需要一段時間才返回的方法。
什麼預期:打印
- 首先調試消息。
- 代碼被執行。
- 打印第二條調試消息。
發生了什麼事:執行
- 代碼。
- 打印第一個和第二個調試消息(按順序)。
我試着這樣做:
void Update() {
if (Input.GetMouseButtonDown(0) && useRandomSeed && !mapGenPending) {
Debug.Log("Generating New Map...");
mapGenPending = true;
} else if (mapGenPending) {
GenerateMap();
Debug.Log("New Map Generated!");
mapGenPending = false;
}
}
但是,這仍然導致了第二種情況。我認爲Unity可能不關心Update()
每個週期內的某些代碼段的順序,但即使是2個週期也不足以將消息按順序打印在控制檯中。
最終,如何防止這種情況發生,以獲得預期的訂單?
這似乎很奇怪。我從來沒有面對過這個。你還可以添加你在問題中得到的輸出嗎? –