Thread t = new Thread( 委托类型的参数 );
参数 ThreadStart(不带参的委托) ParameterizedThreadStart(带一个object参数的委托)
Unity引擎不支持C#多线程
协同函数是分段执行的函数,不是每次调用都执行完整
定义和使用
定义协同函数格式:
[修辞]IEnumerator 协同函数名(行參列表)
{
语句1;
yield return new WaitForSeconds(等待时间);// 如果返回以后,下次进入协同方法会从返回的语句之后继续执行,执行完上面的代码后休息指定的秒数,它不会影响引擎更新函数
语句2;
yield return null; // 下一帧继续从后面的语句继续执行,存粹为了将函数分段
if(条件)
yield break; // 结束协同方法,后面的语句不再执行
语句3;
}
调用协同函数方法:
启动协同:
举例:
// 此种方式最多只可以有1个参数
// 只能调用当前对象的协同方法
// 停止协同
StopCoroutine("Run");
// 此种方式可以调用多參的方法
// 可以调用其他对象的协同方法
Coroutin co = StartCoroutine(Run());
// 停止协同
StopCoroutine(co);
StopAllCoroutine();
举例:
StopAllCoroutine();
Resources.LoadAsync
using UnityEngine;
public class ExampleClass : MonoBehaviour {
void Start() {
StartCoroutine(LoadTexture());
}
IEnumerator LoadTexture() {
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
ResourceRequest request = Resources.LoadAsync<Texture2D>("glass");
yield return request;
go.renderer.material.mainTexture = request.asset;
}