ToLua#自动打包01--NGUI

1.导入插件
https://pan.baidu.com/s/1dH0mBW
2.自动打包
这里写图片描述
##修改Packager脚本的HandleExampleBundle方法

static void HandleExampleBundle(BuildTarget target) {
        Object mainAsset = null;        //主素材名,单个
        Object[] addis = null;     //附加素材名,多个
        string assetfile = string.Empty;  //素材文件名

        BuildAssetBundleOptions options = BuildAssetBundleOptions.UncompressedAssetBundle |
                                          BuildAssetBundleOptions.CollectDependencies |
                                          BuildAssetBundleOptions.DeterministicAssetBundle;
        string dataPath = Util.DataPath;
        if (Directory.Exists(dataPath)) {
            Directory.Delete(dataPath, true);
        }
        string assetPath = AppDataPath + "/StreamingAssets/";
        if (Directory.Exists(dataPath)) {
            Directory.Delete(assetPath, true);
        }
        if (!Directory.Exists(assetPath)) Directory.CreateDirectory(assetPath);

        /////-----------------------------生成共享的关联性素材绑定-------------------------------------
        //BuildPipeline.PushAssetDependencies();

        //assetfile = assetPath + "shared" + AppConst.ExtName;
        //mainAsset = LoadAsset("Shared/Atlas/Dialog.prefab");
        //BuildPipeline.BuildAssetBundle(mainAsset, null, assetfile, options, target);

        /////------------------------------生成PromptPanel素材绑定-----------------------------------
        //BuildPipeline.PushAssetDependencies();
        //mainAsset = LoadAsset("Prompt/Prefabs/PromptPanel.prefab");
        //addis = new Object[1];
        //addis[0] = LoadAsset("Prompt/Prefabs/PromptItem.prefab");
        //assetfile = assetPath + "prompt" + AppConst.ExtName;
        //BuildPipeline.BuildAssetBundle(mainAsset, addis, assetfile, options, target);
        //BuildPipeline.PopAssetDependencies();

        /////------------------------------生成MessagePanel素材绑定-----------------------------------
        //BuildPipeline.PushAssetDependencies();
        //mainAsset = LoadAsset("Message/Prefabs/MessagePanel.prefab");
        //assetfile = assetPath + "message" + AppConst.ExtName;
        //BuildPipeline.BuildAssetBundle(mainAsset, null, assetfile, options, target);
        //BuildPipeline.PopAssetDependencies();

        /////-------------------------------刷新---------------------------------------
        //BuildPipeline.PopAssetDependencies();

        //////////////////////////////////////////////////////////////////////////////  
        string content = File.ReadAllText(Application.dataPath + "/AssetBundleInfo.csv");
        string[] contents = content.Split(new string[] { "\r\n" }, System.StringSplitOptions.RemoveEmptyEntries);
        for (int i = 0; i < contents.Length; i++)
        {
            string[] a = contents[i].Split(',');
            //UnityEngine.Debug.Log(a[0]); UnityEngine.Debug.Log(a[1]); UnityEngine.Debug.Log(a[2]);  
            AddBuildMap(a[0], a[1], a[2]);
        }

        string resPath = "Assets/" + "StreamingAssets";
        BuildAssetBundleOptions option = BuildAssetBundleOptions.DeterministicAssetBundle |
                                          BuildAssetBundleOptions.UncompressedAssetBundle;
        BuildPipeline.BuildAssetBundles(resPath, maps.ToArray(), option, target);
        maps.Clear();  
    }
    static List<AssetBundleBuild> maps = new List<AssetBundleBuild>();
    static void AddBuildMap(string bundleName, string pattern, string path)
    {
        string[] files = Directory.GetFiles(path, pattern);
        if (files.Length == 0) return;

        for (int i = 0; i < files.Length; i++)
        {
            files[i] = files[i].Replace('\\', '/');
        }
        AssetBundleBuild build = new AssetBundleBuild();
        build.assetBundleName = bundleName;
        build.assetNames = files;
        maps.Add(build);
    }  

这里写图片描述

这里写图片描述

,每一次打包,先点击LuaFramework/AddBuildMapUtility,准备好AB包的信息,然后点击LuaFramework/Build xxx Resource来进行打包,在window平台下,检查Assets\StreamingAssets中的资源是否正确。还有最重要的一点,每次对lua文件或者其他资源更改后,都要点击菜单栏LuaFramework/Build xxx Resource来重新打包!
在StreamingAssets下查看是否打包成功

运行出现
1.打包运行后可能会提示FileNotFoundException: Could not find file “c:\luaframework\shared.unity3d”.这个错误,追踪错误到ResourceManager.cs中的initialize方法,如果AppConst.ExampleMode为true,则需要shared.unity3d这个AB包。因此,打包的时候需要把shared文件夹也选上哦。。
2.生成的面板会在GUI这个物体下,那么如何修改这个物体呢?找到GameManager.cs中的InitGui方法,修改一下即可。GUI这个预制体,可以在Project视图搜索即可。

猜你喜欢

转载自blog.csdn.net/baidu_39447417/article/details/79029843
今日推荐