ienumerator 发音 [ɪ´njuːməreɪtə] new-mer-rate 生成器
StartCoroutine 发音color-Tin 协程
return,就是简单的一个函数返回值
cs
private int funcforReturn(int a,int b)
{
int c;
c=a+b;
return c;
}
打印结果:
cs
SuperController.LogMessage("Return的结果:" + funcforReturn(1,2) );
结果为:3
下面我们来看看 yield return
System.Collections.IEnumerator
让我们一起来理解 yield return
cs
IEnumerator createCoroutine = CreateLightCo("MyLight");
StartCoroutine(createCoroutine);
生成一个生成器程序(是一个协程):IEnumerator createCoroutine = CreateLightCo("MyLight");
第二句是固定语法,让这个协程运行:StartCoroutine(createCoroutine);
再看看CreateLightCo();是怎么写的
cs
private IEnumerator CreateLightCo(string aUID)
{
yield return SuperController.singleton.AddAtomByType("InvisibleLight", aUID, false, false, false);
myAtom = SuperController.singleton.GetAtomByUid(aUID);
SuperController.LogMessage("生成的灯光:" + myAtom.uid );
}
yield return,单单从return来看
假如是这样的形式:
cs
return SuperController.singleton.AddAtomByType("InvisibleLight", aUID, false, false, false);
那么函数就会返回了,而不接着执行下面的代码。
我们需要知道是,SuperController.singleton.AddAtomByType("InvisibleLight", aUID, false, false, false); 是一个生成器,它是生了一个灯光Atom。
重要理解的一点是,必须等这个灯光原子生成后,后面的代码是对它的操作,如果它不生成出来,就执行后面的代码,那肯定报错了。
yield return,就完美的解决了这个问题,等出来结果(灯光原子生成完毕)了,再执行后面对它操作的代码。
就是这么简单的一个功能:等结果出来后,接着执行!