KSFramework研究纪要

发布于 2019-12-20  456 次阅读


发包前重要步骤和KSFramework的重要路径:

KEngine - > Settings -> Force Compile Settings + Code

    /Product/SettingSource/ => /Assets/AppSettings.cs 从配置表生成配置数据cs类

    /Product/SettingSource/ => /Product/Setting/ 生成tsv数据文件

KEngine - > UI(GUI) -> Export All UI 

    /Assets/BundleEditing/UI/ =>  /Assets/BundleResources/UI/ 从编辑UI用的场景生成预制件

XLua -> Clear code

XLua -> Generate code

   设置过绑定的CS类和Unity内置类 => /Assets/XLua/Gen/ 供Lua调用的封装CS对象

KEngine - > AssetBundle -> Build All /Rebuild All  

    => /Assets/StreamAssets/ 包括预制件 场景 多媒体资源 lua代码等内容 导出成AssetBundle

KEngine -> AutoBuilder -> Android Dev

    切换平台 

    /Assets/StreamAssets/内容移动到/Product/Bundles/XXX(Android)/

    打包APK

用于编辑UI预制件的场景放在/Assets/BundleEditing/UI/

场景不能和任何其他场景重名,即使和不包含UIWindowAsset组件物体的场景同样不能重名,否则会发生Prefab的UI组件与lua绑定失效的问题。

Assets/KSFramework/KEngine/KEngine.Lib/TabeMLCompiler/ 这里的DLL仅在UnityEditor中使用 不能打包发布到手机因为引用了Winform相关的库。

计划:现在的unity2018已经可以不用场景直接编辑Prefab,或许可以修改调整去掉场景里生成ui prefab的流程

在场景文件里单独编辑预制件还可以配合摄像机等其他辅助物体进行对位,编辑预制件的场景仍然有必要

打包前最好调用xLua生成一遍包装代码,不然:

KSFramework研究纪要  Unity 热更新 xLua KSFramework KEngine 第1张

改动:修改了SceneLoader.Load方法的第一个参数,现在不需要加Scene\前缀,直接输入放到Scene里的场景路径即可载入。

经验:遇到aguments invalid的LUA层错误,先检查是否对一个luatable调用成员方法的时候没有用第一个self参数,也没有用:替代.

疑问:lua是在另外线程执行的么? 线程同步使用的什么机制? 同样一个按钮事件是CS先执行还是LUA先执行?LUA能等待CS线程或者协程的同步消息么? 

经验:用StaticAssetLoader.Load载入的物体会创建在场景里,如果不希望放进场景的话可以SetActive(false)



点击数:94


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。