笔记-<协同函数>

本文探讨了Unity中的Coroutine使用,包括其在生成连续效果、屏幕计时及对象销毁等场景的应用。强调了Coroutine只能在MonoBehaviour中使用,并不能在Update或FixedUpdate中直接调用yield。详细讲解了StartCoroutine的两种方式及其区别,以及如何停止协程。此外,还对比了C#与JavaScript中使用Coroutine的不同,并分析了协程函数的返回值和参数类型设计模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void Start () {  
StartCoroutine(Destroy());  
}     
IEnumerator Destroy(){  
yield return WaitForSeconds(3.0f);   
Destroy(gameObject);  
}

该段代码意思是:调用StartCoroutine函数开启协程,yield等待一段时间后,销毁这个对象;由于是协程在等待,所以不影响主线程操作。

1.可用于生成连续敌人之间的等待;

2.屏幕显示时间;

3.等待一段时间销毁物体;

Unity中使用Coroutine需要注意的问题:
1.使用的地方和不能使用的地方:

必须在MonoBehaviour或继承于MonoBehaviour的类中调用 yield coroutineyield不可以在Update或者FixedUpdate里使用。

2.开启协程:

StartCoroutine(string methodName)StartCoroutine(IEnumeratorroutine)都可以开启一个协程,

区别:

使用字符串作为参数时,开启协程时最多只能传递一个参数,并且性能消耗会更大一点; 而使用IEnumerator作为参数则没有这个限制。

3.删除协程:

1).Unity3D中,使用StopCoroutine(stringmethodName)来终止该MonoBehaviour指定方法名的一个协同程序,使用StopAllCoroutines()来终止所有该MonoBehaviour可以终止的协同程序。

包括StartCoroutine(IEnumerator routine)的。

4.jsC#中使用区别:

C#中要使用 yield return而不是yield

C#yield(中断)语句必须要在IEnumerator类型里,C#方法的返回类型为IEnumerator,返回值如(eg:yield return new WaitForSeconds(2); 或者 yield returnnull);

5.协程函数返回值和参数类型,组合的设计模式:

协同程序的返回类型为Coroutine类型。在Unity3D中,Coroutine类继承于YieldInstruction,所以,协同程序的返回类型只能为null、等待的帧数(frame)以及等待的时间。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值