【发布时间】:2016-09-27 20:16:25
【问题描述】:
每当使用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 个周期也不足以让消息按顺序在控制台中打印。
最终,如何防止这种情况发生,以按预期获得订单?
【问题讨论】:
-
这看起来很奇怪。我从来没有遇到过这种情况。您能否也添加您在问题中得到的输出?