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;
}