对于yield关键字我们首先看一下msdn的解释:如果你在语句中使用yield关键字,则意味着它在其中出现的方法、运算符或get访问器是迭代器。通过使用yield定义迭代器,可在实现自定义集合类型的IEnumerable和IEnumerator模式时无需其他显式类(保留枚举状态的类,有关示例,请参阅...
我们常用IEnumerable,却忽视IEnumerator。简单来说,IEnumerable是可以被循环遍历的集合,IEnumerator实施循环遍历。 接口分别是:public interface IEnumerator
{ bool MoveNext(); object Current{get...
分类:
编程语言 时间:
2015-04-01 08:15:03
阅读次数:
153
使用协程实现比较方便,可以带参数。void Start(){ StartCoroutine(delayLaunchRocket(rocket,2.0f));}IEnumerator delayLaunchRocket(Obj rocket,float delayTime){ yield re...
分类:
编程语言 时间:
2015-04-01 07:01:13
阅读次数:
176
在做unity3d工程的时候,有时候需要让进程暂停一段时间。
有人建议使用yield return new WaitForSeconds(value);用法如下:
IEnumerator Wait(float value) //等待的时间,单位秒
{
print(Time.time);
yield return new WaitForSeconds...
分类:
编程语言 时间:
2015-03-18 12:33:13
阅读次数:
146
迭代器之IEnumerable、IEnumerator、IEnumerable 、 IEnumerator。
分类:
其他好文 时间:
2015-03-10 19:01:20
阅读次数:
155
本文主要分为三部分:
1)yield return, IEnumerator 和 Unity StartCoroutine 的关系和理解
2)Cortoutine 扩展——Extending Coroutines: Return Values and Error Handling
3)Co...
分类:
编程语言 时间:
2015-02-05 11:21:26
阅读次数:
385
string[] A = new string[5] { "a1","a2","a3","a4","a5"}; //第一种方法 for (int i = 0; i < A.Length; i++) { Console.WriteLine(A[i]); } //第二种方法 IEnumerator e=...
分类:
编程语言 时间:
2015-02-01 16:04:19
阅读次数:
231
12.1.3.1 写序列表达式
在 C# 中,当我们实现返回 IEnumerable、IEnumerator,或对应的非泛型方法时,可以自动使用迭代器。F# 序列表达式使用 seq 标识符显式标记,而且不必要使用方法体或函数体。正如其名字所暗示的,序列表达式是表达式的不同类型,我们可以在代码中的任意位置使用。清单 12.2 演示了使用此语法,创建简单的序列。
清单 12.2 介绍序...
分类:
其他好文 时间:
2015-01-20 15:45:07
阅读次数:
175
12.1.3 使用 F# 序列表达式
在 C# 中的迭代器非常方便(comfortable),能够在普通的 C# 方法中写复杂的代码(实现 IEnumerable/IEnumerator 接口的类型)。开发人员写的代码使用标准的C# 功能,比如环,唯一的改变只是我们可以使用一种新的语句,来做一些非标准的事情,这个新语句用 yield return 表示(或者 yield break 表示终...
分类:
编程语言 时间:
2015-01-19 10:57:06
阅读次数:
219
void OnClick()
{
//StartCoroutine(LoadLevel());
StartCoroutine(LoadFrompersister());
}
IEnumerator LoadLevel()
{
string url = "file://" + Application.dataPath + "/2.Android.unity3d";
Debug.Log(url);
...
分类:
编程语言 时间:
2015-01-18 17:13:18
阅读次数:
313