【发布时间】:2021-06-12 12:33:35
【问题描述】:
试图让系统能够存储任何类型的屈服指令
YieldInstruction m_yield;
void SetInstruction()
{
switch(condition)
{
case UseWait:
m_yield = new WaitForSeconds(1f);
break;
case UseWaitUntil:
m_yield = new WaitUntil(() => flag == true); // Cannot cast here
}
}
将类型更改为 IEnumerator 会将问题放在第一个问题上。 CustomeYieldInstruction 也不做。
我无法确定 YieldInstruction 和 CustomYieldInstruction 之间的关系。尽管有名字,一个是它自己的基类型,而后者是 IEnumerator。
我也很困惑,因为这两种方法可以在 IEnumerator 方法中产生,但如果按照我的尝试完成则不会强制转换。
public sealed class WaitForSeconds : YieldInstruction{ /* ** */ }
public class YieldInstruction { }
public sealed class WaitUntil : CustomYieldInstruction { /* ** */}
public abstract class CustomYieldInstruction : IEnumerator { /* ** */ }
我可以做到:
public IEnumerator Sequence()
{
yield return new WaitForSeconds(1f),
yield return new WaitUntil(()=> condition == true);
}
【问题讨论】:
标签: c# unity3d coroutine yield