c# - 协程 yield 返回 null
问题描述
这是我的第一个问题..
我学习了如何使用 C# 和 Unity 制作游戏,所以我遇到了Coroutines,我知道这些方法是如何工作的,但有一件事我不明白:
yield return null
例如:
IEnumerator Attack(){
// Somecode..
while(true){
//DoSomething..
yield return null
}
}
此处已提出此问题:Unity - IEnumerator's yield return null
但我仍然需要更多解释
如果这个问题很愚蠢,请原谅我,但就像我说的那样,我只是在学习。
谢谢你。
解决方案
每个游戏都是基于循环的。您可以在简化图中看到此逻辑:
感谢@Draco18s,这是完整的 Unity 框架逻辑图。
此循环的一次迭代称为“帧”。yield return null
像continue
循环中的关键字一样工作 - 它只是进入下一个游戏循环迭代,即“帧”。
为了更好地理解,让我们创建一个协程,每帧打印当前帧号:
void Awake () {
StartCoroutine(PrintFrameCount());
}
IEnumerator PrintFrameCount() {
for (;;) {
Debug.Log(Time.frameCount);
yield return null;
}
}
这样的协程仅打印当前帧计数的不同值,只能通过在不同帧中打印来更改。
推荐阅读
- python - 如何使用 Selenium 和 Pyhton 在 iframe 中单击弹出窗口按钮
- mysql - SQL - 通过用户本身 - 或 - 他的组从多对多关系中获取记录
- java - 404状态返回请求
- c# - 使用 c# 客户端发送但未收到的电子邮件?
- variables - 如何使用变量拆分基于 kotlin 的大型 Gradle 构建文件?
- mysql - SQL - 按两个不同的值分组
- python - Python:打印 1 行帕斯卡三角形
- json - 如何管理多个项目的 JSON 模式?
- javascript - 在 WordPress 中使用 substr 删除第一个字符串字符
- python - 如何获取詹金斯主机详细信息?