LuaFramework升级笔记
目前在开发一款MOBA类射击游戏, 为了热更我们使用LuaFramework。除了战斗逻辑的逻辑写在Lua里,Lua,UI,导表,行为树等都使用了热更,和王者荣耀类似。一开始使用了SimpleFramework,但是SimpleFramework已经不进行维护了,新的lua框架更合理高效一些也刚好要支持64位就抽空升级了一下。因为对源码做了一些修改,所以有会有一些调整,这里是一些笔记和备忘。[*]Plugin目录下单独建了一个目录放Lua的dll
[*]升级了LuaEncode目录,升级了Lua库
[*]LuaFramework把Editor Examples Lua
ToLua迁移到了LuaFramework目录
[*]Scripts改名为LuaScripts
[*]这些dll需要指定平台
[*]网络下的LuaNetCoroutine里面的LuaCoroutine和新版本的重名,并且编译不过要修改SimpleFramework
[*]D:\WorkS\MGame\mgame\Program\trunk\Client\Assets\Scripts\LuaScripts\Utility
[*]这个目录下的很多文件改了,并且自定义了一些
string
sourceDir = AppConst.FrameworkRoot + "/ToLua/Source/Generate/";
string
sourceDir = AppConst.LuaWrapPath;
[*]LuaClient里少了定义
UNITY_5_5
using
UnityEngine.SceneManagement;
然后改了之后还需要自动升级到5.5代码
[*]msgobj里面用了ByteBuffer,但是这个被人改成了在MobaNet下面了,新的是LuaFramework
[*]PanelManager.cs需要升级
[*]MobaGame.Framework.Message重名了
[*]新加了MGameUtils不和Lua的混在一起,一些全局变量读常量表
[*]替换音效管理器StartUpCommand里加AppFacade.Instance.AddManager<SoundManager>(ManagerName.Muisc);
[*]AppConst.cs有比较大的修改
[*]ResourceManager有大幅修改,支持热更
[*]GameManager有大幅修改
[*]ResManager.Initialize();去掉了
[*]LuaBehaviour.cs大幅修改,增加了自己UI管理器
[*]D:\WorkS\MGame\mgame\Program\trunk\Client\Assets\Scripts\LuaFramework\Editor\Packager.cs大幅修改
[*]ToLuaMenu.AutoGen();增加自动生成的功能。
[*]默认的Lua文件保存位置
&#34;D:/WorkS/MGame/mgame/Program/trunk/Client/Assets/com.Lilith.MOBA3/ToLua/Source/Generate/&#34;
[*]ToLuaMenu下的beCheck这个是用来控制是否自动检测wrap目录没有文件,如果没有文件自动生成
[*]AppConst下的FrameworkRoot是Framwork的根目录,D:/WorkS/MGame/mgame/Program/trunk/Client/Assets/com.Lilith.MOBA3修改为D:/WorkS/MGame/mgame/Program/trunk/Client/Assets/Scripts/LuaFramework
[*]AppView下的输出都干掉了
[*]GameManager大幅修改
[*]LuaLoader.cs大幅修改,这里必须要改因为涉及到读取方式
[*]LuaManager的InitLuaBundle修改,因为加载问题
[*]D:\WorkS\MGame\mgame\Program\trunk\Client\Assets\LuaFramework\Lua\Common
define修改很多自己的接口
[*]D:\WorkS\MGame\mgame\Program\trunk\Client\Assets\LuaFramework\Lua\Controller
全部覆盖
[*]GameManager改到Game
[*]CustomSetting里面添加很多Mgame的导出宏
[*]Lua的协议目录
D:\WorkS\MGame\mgame\Program\trunk\Client\Assets\LuaFramework\Lua
protobuf.lua
[*]D:\WorkS\MGame\mgame\ProgrConfigMgr.luaam\trunk\Client\Assets\LuaFramework\Lua\Base我加的用来读表的ConfigMgr.lua
[*]D:\WorkS\MGame\mgame\Program\trunk\Client\Assets\LuaFramework\Lua\Logic
[*]CtrlManager有修改
[*]GeniusGtrl的278行list
[*]list的是count改为Count
[*]字典的是[]改为get_Item
[*]D:\WorkS\MGame\mgame\Program\trunk\Client\Assets\Scripts\LuaScripts\Network\ByteBuffer.cs 增加LuaByteBuffer等几个接口
[*]一些路径修改
Util.DataPath
&#34;D:/WorkS/MGame/mgame/Program/trunk/Client/Assets/StreamingAssets/&#34;
Application.streamingAssetsPath
&#34;D:/WorkS/MGame/mgame/Program/trunk/Client/Assets/StreamingAssets/&#34;
&#34;D:/WorkS/MGame/mgame/Program/trunk/Client/Assets/LuaTemp/&#34;
[*]Package路径改回来
[*]D:\WorkS\MGame\mgame\Program\trunk\Client\Assets\Scripts\LuaScripts\Controller\Command\StartUpCommand.cs这个也改了不少,否则report起不来
PS:就性能来说Lua的性能还是不错的,开销比较高的往往是C#到Lua层的开销。我们游戏射速和战斗激烈程度比王者荣耀还有高出很多倍,因此战斗部分还是更追求性能和效率放到C#层,所有系统UI逻辑等放到Lua里支持热更。当时还跑了一下性能对比:
不是tps吗 更像moba 很好,现在刚接触unity研发,受益匪浅 同使用luaframework
页:
[1]