[Unity熱更新]tolua# & LuaFramework(十二):基礎補充

[Unity熱更新]tolua# & LuaFramework(十二):基礎補充

參考:https://www.zhihu.com/people/pyluo/posts

一.在lua中輸出資訊:

print("hello ") ;
LuaFramework.Util.Log("World");	


其中Util這個類封裝了很多實用的方法供lua呼叫,值得去看一下~

二.重要的常量

1.Util.AppContentPath():遊戲包資源目錄。

Mac OS或Windows:Application.dataPath   "/StreamingAssets";
IOS: Application.dataPath   "/Raw";
Android:jar:file://"   Application.dataPath   "!/assets/";

2.Util.DataPath:資料目錄。外部路徑。

Android或IOS:Application.persistentDataPath   "/LuaFramework"    
Mac OS或Windows:c:/LuaFramework/
除錯模式下:Application.dataPath   "/StreamingAssets/"

這裡注意的是Application.platform這個東西,在Window的unity編輯器中,輸出為RuntimePlatform.WindowsEditor,而不是RuntimePlatform.WindowsPlayer!

Debug.Log(Application.platform);
Debug.Log(Application.platform == RuntimePlatform.WindowsEditor);
Debug.Log(Application.platform == RuntimePlatform.WindowsPlayer);
Debug.Log(Util.DataPath);

3.直接執行lua程式碼

找到AppConst.LuaBundleMode,如果為true,表示讀取AB包內的lua檔案,這意味著每次修改lua程式碼,都要重新build;為了提高效率,可以修改為false,表示直接讀取lua檔案。

4.從伺服器下載東西來更新客戶端

找到AppConst.UpdateMode,如果為true,表示將通過伺服器更新資源。

三.載入AB包

在AB包的載入方面,NGUI沒有使用unity5的新打包方式,並沒有處理好依賴關係,而UGUI使用的是新打包方式。因此建議將UGUI版本的ResourceManager替換NGUI版本的。至於LuaFramework中AB包的載入流程,可以看一下http://blog.csdn.net/lyh916/article/details/45021703。

四.常用的內建lua檔案

1.LuaFramework\Lua\Common\functions.lua
跟Util一樣,也是工具類,提供GameObject相關方法等
2.LuaFramework\ToLua\Lua\event.lua
提供每幀執行的方法
--主入口函式。從這裡開始lua邏輯
function Main()									
UpdateBeat:Add(Update, self)
end
function Update()
Util.Log("Update");
end

除此之外,還有LateUpdateBeat、FixedUpdateBeat和CoUpdateBeat(協同)

3.LuaFramework\ToLua\Lua\UnityEngine
有Vector3.lua、Mathf.lua等
五.常用的內建C#類
1.LuaBehaviour
以例子例項化出來的PromptPanel為例,在Awake和Start中會呼叫PromptPanel.Awake(obj)和PromptPanel.Start()。