unity如何解决协程开启频繁导致的程序卡顿

unity如何解决协程开启频繁导致的程序卡顿

一、协程

协程并不会在Unity中开辟新的线程来执行,其执行仍然发生在主线程中。当我们有较为耗时的操作时,可以将该操作分散到几帧或者几秒内完成,而不用在一帧内等这个操作完成后再执行其他操作。

二、协程开启频繁

unity中协程在start前需要判断其是否开启了,否则协程会不断叠加

三、解决方式

解决方式一:
协程start前需要判断是否协程开启了,开启的停止进行重新开启:
即:开启协程前,将之前已经开启的给关闭。
private Coroutine coroutine_setReConnect;
if (coroutine_setReConnect != null)
{
StopCoroutine(coroutine_setReConnect);
coroutine_setReConnect = null;
}
coroutine_setReConnect = StartCoroutine(IE_SetReConnect());

解决方式二:
自己定义一个bool值进行判断协程是否在执行,如果是在执行无法开启协程
开始时判断这个bool是false才能开启协程
if(!bIsStartCoroutine)
A();
private void A()
{

      bIsStartCoroutine = true;
        StartCoroutine(B() as IEnumerator);

}
private IEnumerator B()
{

  yield return null;
    bIsStartCoroutine = false;
}

猜你喜欢

转载自blog.csdn.net/lucky_XiaoZhang/article/details/127852456
今日推荐