在完成项目中的第一个玩法,长沙麻将之后,我们发现项目中的一个重大问题。玩家打一局游戏开始的时候没有什么问题,但是打到中途,一般在4-5局的时候就会出现卡顿的问题,并且会随着游玩时间加长,卡顿会随时间加重,以至于最后FPS到10一下,游戏如同幻灯片。
通过Unity中的性能检测器,发现游戏刚开始看不出什么问题,但是到游戏中期,会发现有在LuaLooper.cs中的LateUpdate()函数在不停的跳,也就是随着游玩时间的加长,这个函数的跳跃越密集,如下图。
经过查阅资料发现,这个lualooper主要负责lua中的协程调用。而项目之前在游戏逻辑中有大量使用协程。
下面就对lua的协程做一个简单的小结:
lua协程函数有六个
coroutine.start():开启一个协程,第一个参数是要开启的协程函数
coroutine.wait():等待函数,第一个参数是等待的秒数,第二个是一个协程函数(注意这个方法只能在已经开启的协程函数中使用)
例如:
coroutine.start(this.co)
function this.co ()
coroutine