用户工具

站点工具


侧边栏

script:unityengine:classes:customyieldinstruction:customyieldinstruction

CustomYieldInstruction 自定义中断指令

Description 描述

Base class for custom yield instructions to suspend coroutines.

用于自定义中断指令来暂停协程的基类。

CustomYieldInstruction lets you implement custom yield instructions to suspend coroutine execution until an event happens. Under the hood, custom yield instruction is just another running coroutine. To implement it, inherit from CustomYieldInstruction class and override keepWaiting property. To keep coroutine suspended return true. To let coroutine proceed with execution return false. keepWaiting property is queried each frame after MonoBehaviour.Update and before MonoBehaviour.LateUpdate.

CustomYieldInstruction让你实现自定义中断指令来暂停协程执行,直到事件发生。自定义中断指令只是另一种运行的协程。要实现这个,需要继承自CustomYieldInstruction类,并重写keepWaiting属性。保持协程暂停返回true,协调继续执行返回false。keepWaiting被查询是在MonoBehaviour.Update之后,在MonoBehaviour.LateUpdate之前。

C#:

using UnityEngine;
 
// Implementation of WaitWhile yield instruction. This can be later used as:
// yield return new WaitWhile(() => Princess.isInCastle);
class WaitWhile: CustomYieldInstruction {
	Func<bool> m_Predicate;
 
	public override bool keepWaiting { get { return m_Predicate(); } }
 
	public WaitWhile(Func<bool> predicate) { m_Predicate = predicate; }
}

To have more control and implement more complex yield instructions you can inherit directly from System.Collections.IEnumerator class. In this case, implement MoveNext() method the same way you would implement keepWaiting property. Additionaly to that, you can also return an object in Current property, that will be processed by Unity's coroutine sch

script/unityengine/classes/customyieldinstruction/customyieldinstruction.txt · 最后更改: 2016/08/02 05:30 (外部编辑)