January
10th,
2018
Unity3D 项目后期,性能优化就是一个必须要做的功课。
后期优化其实是一个亡羊补牢的过程,重要的是前期的需求明确及优良的设计。
现在的项目大多数是 C# + Lua 的形式那么我们就需要检测这两部分的性能
利用 Unity3D 的 Profiler 窗口监控 Lua 的性能热点
- C# 中的 Profiler 中有一对函数可以用来记录代码块之间的CPU时间及GC Alloc
- Profiler.BeginSample
- Profiler.EndSample
- Lua 中 Debug 库中的 hook 可以注册一个函数,在Lua程序运行中某一事件到达时被调用
debug.sethook(
function(event, line)
if event == 'call' then
local func = debug.getinfo(2, 'f').func
local name = cache[func]
-- local info = debug.getinfo(2, 'Sn')
-- name = info.short_src
...
Profiler.BeginSample( name )
elseif event == 'return' then
Profiler.EndSample()
end
end, 'cr', 0 ) )
将上面的代码装配成 Editor 脚本,在需要的时候调用即可
您的打赏是对我最大的鼓励!