KSFramework
KEngine + SLua+ Framework = KSFramework
KSFramework是一個整合KEngine、SLua的Unity 5開發框架,並為程序、美術、策划、運營提供輔助工具集。
熱重載是KSFramework的開發重點——在不重啟游戲的前提下,重載代碼、配置表可立刻看到修改效果,最大限度的提升開發、調試的速度,方便運營階段熱更新。
安裝
從產品包安裝
你可以從KSFramework Release頁面下載最新版本的產品包。
解壓后直接用Unity打開KSFramework目錄,或直接雙擊場景KSFramework/Assets/Game.unity。
從源碼安裝
獲取到源碼后,需要通過git submodule命令獲取KEngine和SLua
git submodule init
git submodule update
拉取submodule后,Windows下雙擊執行源碼Install.bat進行安裝,把KEngine和SLua相關代碼鏈接到KSFramework各目錄,然后用Unity打開
教程
- KSFramework: Unity3D開發輔助框架快速入門
- KEngine策划指南: 配置表格的編輯與編譯
- KEngine: 資源的打包、加載、調試監控
- KSFramework常見問題:Lua腳本熱重載,內存狀態數據會不會丟失?
- KSFramework常見問題:Excel如何進行SVN協作、差異比較?
- KEngine配置表:擴展表格解析類型
結構組成
![KSFramework由KEngine和SLua結合組成]
功能特性
資源模塊
- Unity 5中一鍵打包Asset Bundle
- AssetBundle加載器,加載時自動處理依賴關系
- 資源路徑約定,含熱更新資源機制
- 手動的、引用計數的資源釋放策略
資源運行時重載(減引用計數)
配置表模塊
- 自動編譯Excel,支持在表中添加注釋
- Excel表頭,可設置數據類型(如int, array的聲明)
- 自動生成配置表讀取代碼
- 支持惰式加載,無初始化的時間消耗
- 支持熱重載,運行時修改配置表無需重啟
UI模塊
- 約定優於配置式的UI框架
- 快速導出當前編輯的UI
- 支持熱重載,運行時修改UI腳本無需重啟
腳本模塊
- 路徑約定,通過import函數進行加載
- 緩存機制配合import函數,可實現所有腳本的熱重載
- Lua新增using函數類似於C#中的using,暴露使用table中的屬性為全局使用
- 可以在編輯器非運行模式下執行Lua腳本,支持簡單Lua單元測試
多語言模塊
- 基於配置表模塊
- 約定好多語言字符串的機制
多語言字符串收集器
Unity編輯器強化
- 編輯代碼后,返回正在運行的游戲,強制停到正在運行的游戲,避免崩潰的出現
- 封裝Unity編輯器的各種事件,如編譯前、播放前、暫停時等
工程建議
建議創建兩個Unity工程:code和art,一個用於代碼編輯,一個用於美術編輯並導出AssetBundle。
這樣code的Unity工程,只帶了代碼和AssetBundle,沒有資源加載的緩慢過程,讓Unity開發更暢快;同時也對代碼部分做了保密,防止其他人員外泄。
鍵盤快捷鍵
- Ctrl+Alt+E: 在編輯UI場景時,導出UI成AssetBundle
- Ctrl+Alt+R: 在運行時,熱重載所有LuaUIController
- Ctrl+Alt+Shift+R: 在運行時,熱重載所有LuaUIController,並且把所有打開狀態UI關閉后重新開啟
- Ctrl+Alt+I: 在編輯器,打開Game.unity主運行場景
- Ctrl+Alt+O: 在編輯器,打開Ctrl+Alt+I前的一個場景
KEngine和KSFramework
定位不一樣
KEngine:為了減低Unity 4.x中AssetBundle的加載、打包復雜度;
KSFramework:一站式的開發框架,可以開箱即用,整合KEngine和SLua。只支持Unity 5。
提供的模塊不同
KEngine: 提供基礎的資源加載(ResourceModule)功能,並以之為基礎,增加配置表(SettingModule)、UI模塊(UIModule)這兩個核心模塊;另外還有針對Unity 4.x的資源依賴打包模塊。
KSFramework:基於KEngine的資源、UI、配置表模塊,實現更直接的、面向具體項目的常用功能模塊,並搭配SLua。
版權說明
KSFramework
Author:kelly(我的主程)
Email: 23110388@qq.com
Github:https://github.com/mr-kelly/KSFramework
歡迎大家到 github提issues
Slua
Github:https://github.com/pangweiwei/slua
Github:https://github.com/mr-kelly/slua