踩Tolua中的大坑之性能问题

在Unity项目中,遇到游戏运行时间增加导致的卡顿问题,通过性能检测发现LuaLooper.cs的LateUpdate()函数调用频繁。研究发现项目中大量使用协程,但结束后未正确关闭,导致内存泄漏。通过对coroutine.lua的分析,实施了在协程结束时主动关闭的策略,解决了性能问题。此经验强调了编码时应谨慎对待协程管理。
摘要由CSDN通过智能技术生成

在完成项目中的第一个玩法,长沙麻将之后,我们发现项目中的一个重大问题。玩家打一局游戏开始的时候没有什么问题,但是打到中途,一般在4-5局的时候就会出现卡顿的问题,并且会随着游玩时间加长,卡顿会随时间加重,以至于最后FPS到10一下,游戏如同幻灯片。
通过Unity中的性能检测器,发现游戏刚开始看不出什么问题,但是到游戏中期,会发现有在LuaLooper.cs中的LateUpdate()函数在不停的跳,也就是随着游玩时间的加长,这个函数的跳跃越密集,如下图。
在这里插入图片描述

经过查阅资料发现,这个lualooper主要负责lua中的协程调用。而项目之前在游戏逻辑中有大量使用协程。
下面就对lua的协程做一个简单的小结:
lua协程函数有六个
coroutine.start():开启一个协程,第一个参数是要开启的协程函数
coroutine.wait():等待函数,第一个参数是等待的秒数,第二个是一个协程函数(注意这个方法只能在已经开启的协程函数中使用)
例如:
coroutine.start(this.co)
function this.co ()
coroutine

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值