Unity3D 项目后期,性能优化就是一个必须要做的功课。

后期优化其实是一个亡羊补牢的过程,重要的是前期的需求明确及优良的设计。

现在的项目大多数是 C# + Lua 的形式那么我们就需要检测这两部分的性能

利用 Unity3D 的 Profiler 窗口监控 Lua 的性能热点

  1. C# 中的 Profiler 中有一对函数可以用来记录代码块之间的CPU时间及GC Alloc
    • Profiler.BeginSample
    • Profiler.EndSample
  2. 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 脚本,在需要的时候调用即可


支付宝打赏 微信打赏

您的打赏是对我最大的鼓励!

linzhanyu


Linux, VIM, OpenGL, Unity3D, AI.

相看莫相笑,同是竹林人。