关于return,yield 和 yield return

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,就完美的解决了这个问题,等出来结果(灯光原子生成完毕)了,再执行后面对它操作的代码。

就是这么简单的一个功能:等结果出来后,接着执行!

相关推荐
aq55356001 分钟前
编程语言对比:从汇编到PHP的四大层级解析
开发语言·汇编·php
kyle~7 分钟前
工程数学---Eigen库(C++唯一标配线性代数库)
开发语言·c++·线性代数
CoderCodingNo9 分钟前
【GESP】C++五、六级练习题 luogu-P1886 【模板】单调队列 / 滑动窗口
开发语言·c++·算法
paeamecium11 分钟前
【PAT甲级真题】- All Roads Lead to Rome (30)
数据结构·c++·算法·pat考试·pat
PD我是你的真爱粉15 分钟前
Redis 数据类型与底层实现:从 SDS、Quicklist 到 ZSet 跳表彻底讲透
数据结构·redis
好家伙VCC16 分钟前
**发散创新:基于Rust的轻量级权限管理库设计与开源许可证实践**在现代分布式系统中,**权限控制(RBAC
java·开发语言·python·rust·开源
xiaoshuaishuai821 分钟前
C# 方言识别
开发语言·windows·c#
汀、人工智能25 分钟前
[特殊字符] 第100课:任务调度器
数据结构·算法·数据库架构·贪心··任务调度器
m0_7190841126 分钟前
天机学堂aaaa
java
John.Lewis27 分钟前
C++进阶(6)C++11(2)
开发语言·c++·笔记