如果使用多线程,就用.net中的 System.Threading::Thread
http://msdn.microsoft.com/en-us/library/system.threading.thread.aspx
Unity3D提供了一个类似多线程的协同程序Corountine。协同程序和主程序可以并行运行,类似子线程和主线程的关系,但是任意时刻只有一个协同程序可以运行,超过一个时,其他的协同程序会挂起。
启动一个协同程序:
JavaScript
function Start() {
print ("Starting " + Time.time);
// Start function WaitAndPrint as a coroutine. And wait until it is completed.
// the same as yield StartCoroutine(WaitAndPrint(2.0));
yield WaitAndPrint(2.0);
print ("Done " + Time.time);
}
function WaitAndPrint (waitTime : float) {
// suspend execution for waitTime seconds
yield WaitForSeconds (waitTime);
print ("WaitAndPrint "+ Time.time);
}
C#
协同函数的返回类型必须为IEnumerator,yield要用yield return来替代,并且启动协同程序要用StartCoroutine。
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
IEnumerator Start() {
print("Starting " + Time.time);
yield return StartCoroutine(WaitAndPrint(2.0F));
print("Done " + Time.time);
}
IEnumerator WaitAndPrint(float waitTime) {
yield return new WaitForSeconds(waitTime);
print("WaitAndPrint " + Time.time);
}
}
Unity3D为协同程序提供了一系列指令它们的父类都是YieldInstruction
WaitForSeconds: 等待若干秒
WaitForFixedUpdate: 等待直到下次FixedUpdate调用