admin管理员组文章数量:1565353
Unity 协程插件More Effective Coroutines Pro 小记
Unity 中协程应用还是非常频繁的,但是一旦大量使用必然导致高GC出现。More Effective Coroutines Pro 插件据官方说可以大量减少GC出现,提高运行速度,那么就我使用一段时间后理一下相关的API,效率图如下,来自官方的说明文档
图一
图二
如何启动一个普通的MEC协程
下面展示一个不同的协程方式
//Unity自带
private IEnumerator UnityCoroutine()
{
yield return new WaitForSeconds(1);
Debug.Log("完成UnityCoroutine协程");
}
//调用
private void test1()
{
StartCoroutine(UnityCoroutine());
}
// MEC
private IEnumerator<float> MECCoroutine()
{
yield return Timing.WaitForSeconds(1);
Debug.Log("完成UnityCoroutine协程");
}
//调用
private void test1()
{
Timing.RunCoroutine(MECCoroutine());
}
进阶一点之我常用的功能API
平时我自己能用到的,协程真是我这样的菜鸟必备技能啊
//MEC等待执行完成
//在test中
IEnumerator _test()
{
//等待1秒后
yield return Timing.WaitForSeconds(1);
//先执行_test1直到完成
Timing.WaitUntilDone(Timing.RunCoroutine(_test1());
//再执行_test2直到完成
Timing.WaitUntilDone(Timing.RunCoroutine(_test2());
//执行_test3暂停
Timing.PauseCoroutines(_test3);
//执行_test3继续运行
Timing.ResumeCoroutines(_test3);
//标记执行
Timing.RunCoroutine(_test4(), "1");
Timing.RunCoroutine(_test5(), "1");
Timing.RunCoroutine(_test6(), "2");
Timing.RunCoroutine(_test7(), "2");
//干掉所有标记为1的,暂停什么的都一样操作
Timing.KillAllCoroutines("1"));
//执行单一操作,比如用户对着UI按钮一顿狂暴点击输出,但是在运行中只执行一次
Timing.RunCoroutineSingleton(_test8(), "handle", SingletonBehavior.Abort);
//点击马上干掉前一个,重新触发一个
Timing.RunCoroutineSingleton(_test9(), "handle", SingletonBehavior.Overwrite);
//点击马上加一个在队列中,上一个执行完才会执行下一个
Timing.RunCoroutineSingleton(_test10(), "handle", SingletonBehavior.Wait);
//先来几个变量
GameObject obj1,obj2,obj3;
private bool test11()
{
return true;
}
//设定生命周期,跟随GameObject 销毁,test11方法执行完成后干掉协程
private bool test12()
{
Timing.RunCoroutine(_Coroutine().CancelWith(obj1, obj2).CancelWith(obj3).CancelWith(test11));
}
//官方案例,还没没用过感觉很不错的,突显链式本色
Timing.RunCoroutine(_TurnRight().Append(_TurnLeft()));
Timing.RunCoroutine(_MoveToFinalPosition(obj1).Append(delegate { Destroy(obj1); }));
}
总结
菜鸟一枚,以上是我的一点点心得,基本上都是官方说明上的案例,有不对的地方望指正,欢迎讨论!官方地址稍后再放,来不及了要下班了!
版权声明:本文标题:Unity 协程插件More Effective Coroutines Pro 学习笔记 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726481161a1072583.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论