第 17 课2026.09.23
有限次数的练习协程自行结束后,允许下一次点击重新启动。
第 17 课:协程自然结束后清空引用
- 日期:2026-09-23
- 课程序号:第 17 课
- 知识点:协程完成后的引用清理
用途或适用场景
有限次数的练习协程自行结束后,允许下一次点击重新启动。
核心概念
上一课用 running != null 阻止重复启动;Coroutine 引用不会在迭代器结束时自动变为 null,需要在正常完成路径清空它。
最小代码或操作示例
csharp
Coroutine running;
void Begin() {
if (running != null) return;
running = StartCoroutine(Practice());
}
System.Collections.IEnumerator Practice() {
for (int i = 0; i < 3; i++) {
yield return new UnityEngine.WaitForSeconds(1f);
UnityEngine.Debug.Log(i);
}
running = null;
}3~5 分钟练习
等待三次输出结束后,再调用一次 Begin()。
参考答案
第一次自然结束时 running 被清空,第二次调用会启动新协程;执行期间的重复调用仍被拦下。
与上一课的联系
沿用第 16 课有界 Practice() 及第 15 课的 running 去重检查;本课只在正常结束后清空引用;下一课可比较暂停游戏时的缩放时间与真实时间等待。
时效校验
时效校验:2026-09-24(已打开 Unity 6.6 MonoBehaviour.StartCoroutine 与 WaitForSeconds 当前文档;未见本课 API 废弃标记)。