unity遊戲開發之ULua框架介紹(二)

1.SimpleFramework框架配置文件數組

(1)AppConst 文件服務器

   在AppConst.cs文件中配置了不少項目開發過程當中,須要使用到的「公共常量信息」。腳本內的常量都有中文備註。所在位置是:Scripts/ConstDefine/AppConst.cs。框架

   字段用「const」關鍵字修飾,方法用「static」關鍵字修飾,該腳本內全部的字段,方法,在外部腳本均可以使用「類名.xxxx」進行訪問使用。編輯器

做用和價值:lua

   該腳本的做用相似於「總控制檯」,經過改變該腳本內的信息,就能夠改變項目的一些核心狀態spa

(2)AppConst 文件修改遊戲

   ExampleMode:在正式項目開發時,該常量須要修改爲false,就是關閉示例工程,關閉以後,就能夠把根目錄下的「Examples」刪除。事件

2.AssetBundle 文件ip

(1)AB 打包命令資源

  Game 菜單以及菜單下的子命令是經過uLua\Editor\Packager.cs 編輯器擴展腳本實現的。在咱們執行完畢AB 打包命令後,在StreamingAssets 文件夾下,會出現3個後爲「.assetbundle」的AB 包,這三個包就是Examples 示例工程須要使用到的AB 包。將AppConst 腳本中的ExampleMode 修改成false,就不會再生成示例工程的AB 資源。

(2)生成本身的AB 包

  將項目資源中的某個預製體設置Asset Labels 信息,而後使用Game 菜單下的命令打包成AB 資源。會發現咱們本身的AssetBundle 文件沒法打包成功。這時候咱們就須要分析Packager.cs 編輯器擴展腳本文件。

分析結果以下:

①示例工程中的資源並無手動指定AssetLabels 信息,而是在編輯器擴展腳本內,使用代碼的方式,動態指定AssetLabels 信息,而後一個資源一個資源單獨打包成AB 包;

②若是想實現能打包咱們本身的AssetBundle 資源,須要對該腳本進行修改。須要對AppConst.ExampleMode 爲假的狀況進行代碼處理:讓腳本能夠打包項目中全部指定了AssetLabels 信息的遊戲物體爲AB 包。

在打包AssetBundle 資源時,可能出現LuaWrap 文件夾下的腳本文件報錯的狀況,解決方法步驟以下:先清空LuaWrap 文件,而後生成AB 資源,最後再從新生成LuaWrap 文件。

3.Lua 和files 文件

(1)Lua 文件夾

StreamingAssets 下的lua 文件夾內的代碼在打包AB 資源的時候,一塊複製過來的。在ULua 熱更新環境下,lua 文件不會被打包成AB 資源,而是直接從服務器端下載.lua 原生文件到本地

(2)files.txt 文件

在StreamingAssets 文件夾下有一個叫作files.txt 的文本文件,這個文件叫作:熱更新清單文件做用相似於AssetBundle 原生的「目錄manifest 文件」。

files 文件內包含AB 包和Lua 文件的路徑信息,以及用於校驗的MD5 值。由於ULua 環境下,lua 腳本不會打包成ab 包,也就意味着lua 腳本文件的信息不會出如今「目錄manifest 文件」中,可是咱們熱更新的時候又須要知道更新哪些lua 文件,因此說出現了這個files.txt 熱更新清單文件。

4.Lua 邏輯腳本

SimpleFramework 框架使用的是MVC 代碼結構,View 文件夾:存放的是UI 功能面板的視圖相關腳本;Controller 文件夾:存放的是UI 功能面板控制器相關腳本。

(1)Panel 界面腳本

   ①PromptPanel.lua :「主面板」的界面腳本.

   ②MessagePanel.lua :「彈出信息面板」的界面腳本.

總結:

    ①這兩個腳本都是和UI 界面相關的,自己沒有實際的代碼邏輯,都是查找當前UI 面板的一些遊戲物體或者組件,而且存儲它們的引用。

    ②能夠把這兩個腳本當成「模板」,咱們後續開發本身的項目的時候,能夠參照這兩個腳本的代碼格式。

 

(2)Ctrl 控制器腳本

   ①MessageCtrl.lua :「彈出信息面板」的界面邏輯功能實現腳本.

   ②PromptCtrl.lua:「主面板」的界面邏輯功能實現腳本.

總結:

   ①這兩個Ctrl 腳本是UI界面的邏輯處理腳本,該腳本主要用於實例化遊戲物體,處理遊戲物體自己的邏輯,並對遊戲物體內的按鈕綁定相關的事件處理方法。

   ②在Ctrl 腳本中會訪問使用Panel 腳本中查找到的遊戲物體引用。

 

5.框架核心腳本介紹

(1)C#核心腳本

 ①框架入口[GlobalGenerator.cs]:在場景中有一個空物體,該物體上掛載了一個「GlobalGenerator.cs」腳本。該腳本字面意思理解是「全局生成器」,它是ULua 熱更新框架的入口啓動腳本。做用相似於VS 控制檯項目中的入口腳本Program.cs。

  ②啓動命令[StartUpCommand.cs]:在ULua 框架啓動後,會執行到「StartUpCommand.cs」腳本。這個腳本的做用是給場景內的遊戲物體添加必備的管理器腳本。

  ③ULua 框架運行後,會自動給「GameManager 遊戲物體」添加7 個管理器腳本,這7 個管理器腳本內,存放了大量的「可複用代碼」。

  ④遊戲管理器[GameManager.cs]:這7 個管理器腳本中,代碼量最大的是GameManager.cs 腳本。在開發過程當中該腳本也是咱們最常操做的一個腳本。熱更新框架中核心的「資源熱更新下載功能」就是在該腳本內實現的。OnResourceInited()方法:C#與Lua 交互的入口。

(2)Lua 核心腳本

遊戲管理器[GameManager.lua]:C#版本的GameManger.cs 中會加載Lua 版的GameManger.lua 腳本。

LuaScriptPanel():返回一個名稱數組.

OnInitOK():加載完View 資源後的回調方法.

②控制器管理器[CtrlManager.lua]:用於管理Lua 環境中全部的Ctrl 類型的腳本.只須要根據開發需求引入對應的Ctrl 文件,而且往Init()方法中添加數據便可。

③定義[define.lua]:存放Lua 環境中的一些定義,只須要根據開發需求往CtrlName 表中添加數據便可。

相關文章
相關標籤/搜索