Unity 3D

来源:互联网 发布:网络媒介素养 名词解释 编辑:程序博客网 时间:2024/06/10 21:13

Unity 3D - 协同程序 :

API列表 :

名称 作用 StartCoroutine 启动指定协同程序 StopCoroutine 终止指定协同程序 StopAllCoroutines 终止所有协同程序 WaitForSeconds 等待若干秒 WaitForFixedUpdate 等待知道下一次FixedUpdate调用

说明 :

  • 一般用来在脚本中增加延时效果。因为在Start()或者Update()中是不能直接延时的(WaitForSecond())等待某个操作结束之后再执行代码字符串做为参数

  • 协同程序,简称“协程”. 在脚本运行过程中,需要额外的执行一些其他的代码,这个时候就可以将“其他的代码”以协程的形式来运行 .

  • 类似于开启了一个线程,但是协程不是线程。

开启协同:

  • StartCoroutine(string methodName):字符串作为参数可以开启线程并在协程结束前终止线程;开启协程时最多只能传递一个参数,并且性能消耗会更大一点

  • StartCoroutine(IEnumerator routine):只能等待协程的结束而不能随时终止(除非使用StopAllCoroutines()方法)

中止协同:

  • StopCoroutine(string methodName):中止一个协同,只能终止该MonoBehaviour中的协同程序

  • StopAllCoroutines():中止所有协同,只能终止该MonoBehaviour中的协同程序

yiled:

  • 和协同密切相关的一个概念,一个协同程序在执行过程中,可以在任意位置使用yield语句。yield的返回值控制何时恢复协同程序向下执行。

注意 :

  • 将协同程序所在gameobject的active属性设置为false,当再次设置active为ture时,协同程序并不会再开启。

  • yield不可单独使用 , 需要与return配合使用 , 例如:

    //等0帧    yield return 0;    //等待1帧    yield return 1;    //等待3秒    yield return WaitForSeconds(3.0);    //立即返回调用点    yield return null;
  • 所有使用yield的函数必须将返回值类型设置为IEnumerator类型,例如:
IEnumerator DoSomething() {    Debug.Log("do something…");}

C#实例 :

using System.Collections;using System.Collections.Generic;using UnityEngine;public class TestScript : MonoBehaviour {    void Start () {        print ("begin");        StartCoroutine ("Test");    }    IEnumerator Test()    {        yield return new WaitForSeconds (2);        print("wait 2 seconds print");    }} 
1 0
原创粉丝点击