协程

开启线程

Unity3D中,使用StartCoroutine(string xxx)和StartCoroutine(IEnumerator xxx)都可以开启一个线程。

区别在于:

1.  使用字符串作为参数可以开启线程并在线程结束前终止线程;

      使用IEnumerator 作为参数只能等待线程的结束而不能随时终止(除非使用StopAllCoroutines()方法);

2.   使用字符串作为参数时,开启线程时最多只能传递 一个参数,并且性能消耗会更大一点;

       使用IEnumerator 作为参数则没有这个限制。

终止协同程序

1. 使用StopCoroutine(string methodName)来终止一个协同程序,使用StopAllCoroutines()来终止所有可以终止的协同程序,但这两个方法都只能终止该 MonoBehaviour中的协同程序

2. 还有一种方法可以终止协同程序,即将协同程序所在gameobject的active属性设置为false,当再次设置active为ture时,协同程 序并不会再开启;如是将协同程序所在脚本的enabled设置为false则不会生效。这是因为协同程序被开启后作为一个线程在运行,而 MonoBehaviour也是一个线程,他们成为互不干扰的模块,除非代码中用调用,他们共同作用于同一个对象,只有当对象不可见才能同时终止这两个线 程。然而,为了管理我们额外开启的线程,Unity3D将协同程序的调用放在了MonoBehaviour中,这样我们在编程时就可以方便的调用指定脚本 中的协同程序,而不是无法去管理,特别是对于只根据方法名来判断线程的方式在多人开发中很容易出错,这样的设计保证了对象、脚本的条理化管理,并防止了重 名。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、协程 协程其实就是一个IEnumerator(迭代器),IEnumerator 接口有两个方法 Current...
    _凉笙阅读 4,149评论 0 3
  • 目录 什么是协程 多线程 协程 协程的使用场景 协程使用示例 Invoke的缺陷 协程语法 开启协程 终止协程 挂...
    Sherlocked_1212阅读 284评论 0 0
  • 一、协程 与 多线程 在Unity中,协程(Coroutines)的形式是非常常用的功能之一,使用它来控制程序的先...
    IT前沿技术分享阅读 12,160评论 1 7
  • 协程是什么? 协程是一个分部执行,遇到条件(yield return 语句)会挂起,直到条件满足才会被唤醒继续执行...
    困卡阅读 1,045评论 0 2
  • 协程,又称微线程,纤程。英文名Coroutine。子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B...
    光明程辉阅读 383评论 0 0