Unity 3D Coroutine&yield(C#脚本)

    xiaoxiao2021-03-25  116

    线程图如上:

    (两张图是引用)

    协程(Coroutine)如下:

    线程使CPU的性能得到了极大的提高,在写Unity的脚本时,刚好一个代码我想用Thread实现,但是在线程实现的时候,编译运行没有问题但是当执行线程的函数时,便开始报错,报错的提示是只要Find函数可以被调用。也就是说在Unity中线程只允许Thread调用组件。而在Unity中使用的是协程(Coroutine)。线程和协程的区别在于线程使用的CPU的时间片段和优先级的轮换,而协程一直占用,不采用cpu的轮换机制。

    在我看来Unity的协程和线程是差不多的

    yield相当于中断向量,将CPU控制权让出。

    using UnityEngine; using System.Collections; public class example : MonoBehaviour { IEnumerator Do() { print("Do now"); yield return new WaitForSeconds(2); print("Do 2 seconds later"); } IEnumerator Awake() { yield return StartCoroutine("Do"); print("Also after 2 seconds"); print("This is after the Do coroutine has finished execution"); } } 这个程序的运行过程是这样的:

    这个例子将执行Do,并等待,直到Do完成再执行其他语句.

    转载请注明原文地址: https://ju.6miu.com/read-14372.html

    最新回复(0)