1、协程Coroutine的优化与设计
对于Unity内的协程,在yield return 时不要每次都new一个,可以在之前创建一个变量做为代替。同时我在项目中创建了一个MYXZTimer,方便可以全局地使用协程,并且统一做优化,下文来说明一下设计思路:
在开发过程中,往往需要滞后地来调用某个函数,例如网络同步,更新信息等,但是这些类又往往不是继承自Monobehavior的,所以这里通过创建一个全局的MYXZTimer来供所有类滞后调用某些方法。所以,这个类需要是一个单例:
然后对于需要滞后调用的方法,我们以Action的方式传入:
其中,对于网络同步这些操作,是需要每隔一定时间就执行一次的,所以使用repeat来规定调用次数,但是有些时候可能需要暂停某个正在执行的协程,这里的设计思路是每次创建一个新的协程的时候会随机产生一个没有使用过的mark用于标记协程,每个mark对应一个正在执行的协程:
由于在AddTimer中已经返回了创建的协程对应的mark