unity 协程怎么 return

unity 协程怎么 return,第1张

这是协前蚂裤同程物宴序慧简 简单用法: int indexvoid Start() { StartCoroutine(RestoreUpForce())} private IEnumerator waittime() { yield return new WaitForSeconds(2)index=2}

协同程序(coroutine)与多线程情况下的线程比较类似:有自己的堆栈,自己的局渣腔部变量,有自己的指令指针(IP,instruction pointer),春梁首但与其它协同程序共享全局变量等很多信息。线程和协同程序的主要不同在于:在多处理器情况下,从概念上来讲多线程程序同时运行多个线程扒数;而协同程序是通过协作来完成,在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只在必要时才会被挂起。

为什么总是有人会问相同的问题呢,这个问题在知道上不知道有多少人回答相同的答案了

以下是我的回答

----------------------------------------------------------------------------------------

主要用于等待,比如www进行服务器请求的时候,由于服务器和网络有延迟,不可能立刻获得数据,这时候,就可以 yield return www.

又比如,想延迟2秒之后做一些事情,就可以yield return new WaitForSecend(2)

Coroutine可以叫做协程,协程里面的主要工作除了正常的逻辑之外就是各种等待,等待其他协程完成,等待www,等待若干时间,等待异步处理等等。

其中

开启一个协程代码为

StartCoroutine(函数名(函数参数));

开启一个协程并等待这个协程完成的代码为

yield return StartCoroutine(函数名(函数参数));

为什么需要协程?因为不希望程序在等待的时候让主线程卡死

比如

public void Start()

{

while(true)

{}

}

那么程序就会卡死,因为无时无刻不在while循环,渲染没法进行

但是加入用协程

public IEnumerator Start()

{

while(true)

{

yield return 1

}

}

那么程序就明简不会卡死,原因在于yield return 1这句话让程宴如序等待了一帧,然后再运行while循环,换句激祥裤话说就是每一帧循环一次,这样,渲染就可以在这段时间运行,程序就看起来不会卡住了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12570025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存