ToLua(LuaFramework) - Tolua 中加載單個預製體Prefab(二)

前面一篇文章中,我們講到了 如何使用 Tolua 框架去加載一個面板(Panel),但是這個方法不是很適用於我們加載單個的 Prefab 資源,所以在這套框架中我們還有其他的一些套路。

先關閉LuaBundleMode
先關閉LuaBundleMode
先關閉LuaBundleMode
在這裏插入圖片描述
1、首先我們新建一個 Prefab 出來,將它放在 LuaFramework 下邊兒的 UI 裏邊,
在這裏插入圖片描述
2、處理 C# 中的 Packager 中的 HandleExampleBundle()方法,
在這裏插入圖片描述
這裏說一下 這個地方的 packager . HandleExampleBundle()方法中調用到的 AddBuildMap()方法的重載
(1)第一個是包名,即打包後在StreamingAssets目錄中顯示的包的名稱,AppConst.ExtName是擴展名,框架默認爲".unity3d",可以自行修改;
(2)第二個參數是打包模式,以字符串形式過濾出要打包的文件名,比如這裏*.prefab就表示源目錄下的所有prefab文件。
(3)第三個參數是要打包的資源的目錄,暫且稱爲源目錄;
注意:在這個地方需要注意的是單個資源和多個資源的打包:
1、如果打包一個資源一個預製件的時候,那麼就是直接將資源名稱填到第一個參數裏邊,然後第二個參數不變,第三個參數直接就是資源的父級文件夾。
2、如果說需要打包多個資源的話,那麼第一個參數傳遞的就直接爲 我們父級的文件夾名稱,注意的是需要小寫,然後第二個參數依然是不變的,第三個參數傳遞的依然是打包的資源目錄

爲了驗證我我們到底是否成功的進行了打包,所以這裏有一個辦法可以進行鑑定:
打開我們的資源管理器:
在這裏插入圖片描述
在這裏插入圖片描述
使用記事本打開我們剛剛創建出來的 uipanel.unity3d.manifest 文件;你可以看到如下:
在這裏插入圖片描述
這個地方是有兩個 .prefab 文件的,那麼這樣就驗證了我們打包 ab 包成功。
3、資源包有了以後我們就是需要在 代碼中 去動態的進行加載了。
打開我們上一篇文章中創建的那個 MainPanelCtrl lua 腳本,然後
作如下更改:

MainPanelCtrl = {};
local this = MainPanelCtrl;

local message;
local transform;
local gameObject;

-- 構建函數--
function this.New()
    return this;
end

function this.Awake()
    panelMgr:CreatePanel('Main', this.OnCreate);
end

-- 啓動事件--
function this.OnCreate(obj)
    gameObject = obj
    transform = obj.transform
    message = gameObject:GetComponent('LuaBehaviour')
    --ui.unity3d資源包
    resMgr:LoadPrefab("ui.unity3d", 
    {
        "Img_List",
        "Btn_StartPlay"
    },
    function(ui)
        log(ui.Length); -- 輸出 1
        log(ui[0].name) -- 輸出 Img_List
        local go = newObject(ui[0]) -- 實例化
        local btn = newObject(ui[1])
        go.transform:SetParent(transform) -- 設置父對象
        go.transform.localPosition = Vector3(-300,70,0)
        btn.transform:SetParent(transform)
        btn.transform.localPosition = Vector3(-290,-200,0)
    end);
end

最後成功加載
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章