我尝试使用如下所示的委托链,试图统一制作动画:
public class Class1
{
class Dele {
delegate void MyDelegate();
private MyDelegate dele;
private int count = 0;
public void Animate() {
dele = new MyDelegate(DoIe);
}
IEnumerator Ie() {
Debug.Log(count);
count += 1;
yield return new WaitForSeconds(5f);
}
private void DoIe() {
StartCouroutine(Ie());
for (int i=0; i<10; i++) {
dele += DoIe;
}
dele();
}
}
//call new Dele().Animate() here
}
我认为日志会像 1个 (5秒) 2 (5秒) ... 10
但是, 1个 2 .. 10 是同时记录的。
如果我想在5秒后回叫另一个Ie, 我该怎么办?
答案 0 :(得分:1)
使用协程,这是稍后在例程中使用的代码 (IEnumerator
方法)。像上面所看到的那样,上面的空返回方法中的代码之后 StartCoroutine()
将运行synchronously(直接)。
您根本不需要在这里的代表。您需要的只是这个:
IEnumerator Ie() {
for (int i=0; i<10; i++) {
Debug.Log(count);
count += 1;
yield return new WaitForSeconds(5f);
}
}
private void DoIe() {
StartCoroutine(Ie());
}
答案 1 :(得分:0)
首先,您的类需要从MonoBehavious继承,才能使StartCoroutine正常工作。 然后考虑到您的问题:您需要延迟启动协程,仅将它们添加到多播代理中根本就没有按照您的想法