Thread t = new Thread( 委托类型的参数 );

参数 ThreadStart(不带参的委托) ParameterizedThreadStart(带一个object参数的委托)

Unity引擎不支持C#多线程

协同函数是分段执行的函数,不是每次调用都执行完整

定义和使用

定义协同函数格式:

[修辞]IEnumerator 协同函数名(行參列表)

  1. {
  2. 语句1;
  3. yield return new WaitForSeconds(等待时间);// 如果返回以后,下次进入协同方法会从返回的语句之后继续执行,执行完上面的代码后休息指定的秒数,它不会影响引擎更新函数
  4. 语句2;
  5. yield return null; // 下一帧继续从后面的语句继续执行,存粹为了将函数分段
  6. if(条件)
  7. yield break; // 结束协同方法,后面的语句不再执行
  8. 语句3;
  9. }

调用协同函数方法:

启动协同:

举例:

  1. // 此种方式最多只可以有1个参数
  2. // 只能调用当前对象的协同方法
  3. // 停止协同
  4. StopCoroutine("Run");
  5. // 此种方式可以调用多參的方法
  6. // 可以调用其他对象的协同方法
  7. Coroutin co = StartCoroutine(Run());
  8. // 停止协同
  9. StopCoroutine(co);
  10. StopAllCoroutine();

举例:

  1. StopAllCoroutine();

Resources.LoadAsync

  1. using UnityEngine;
  2. public class ExampleClass : MonoBehaviour {
  3. void Start() {
  4. StartCoroutine(LoadTexture());
  5. }
  6. IEnumerator LoadTexture() {
  7. GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
  8. ResourceRequest request = Resources.LoadAsync<Texture2D>("glass");
  9. yield return request;
  10. go.renderer.material.mainTexture = request.asset;
  11. }