Exemplo n.º 1
0
    public static void BuildLuaBundles()
    {
        ClearAllLuaFiles();
        CreateStreamDir(GetOS() + "/" + LuaConst.LuaPrefixPath);

#if !UNITY_5 && !UNITY_2017
        string tempDir = CreateStreamDir("Lua");
#else
        string tempDir = LuaConst.LuaExportTempDir;

        if (!File.Exists(tempDir))
        {
            Directory.CreateDirectory(tempDir);
        }
#endif

        string path = Application.dataPath.Replace('\\', '/');
        path = path.Substring(0, path.LastIndexOf('/'));
        CopyBuildBat(path, tempDir);
        CopyLuaBytesFiles(LuaConst.luaDir, tempDir, false);
        Process proc = Process.Start(tempDir + "/Build.bat");
        proc.WaitForExit();
        CopyLuaBytesFiles(LuaConst.toluaDir, tempDir + "/Out");

        AssetDatabase.Refresh();

        string        sourceDir = tempDir + "/Out";
        List <string> dirs      = new List <string>();
        GetAllDirs(sourceDir, SearchOption.AllDirectories, dirs);

#if UNITY_5 || UNITY_2017
        for (int i = 0; i < dirs.Count; i++)
        {
            string str = dirs[i].Remove(0, sourceDir.Length);
            BuildLuaBundle(str.Replace('\\', '/'), FileUtils.GetPathFromAssets(LuaConst.LuaExportTempDir) + "/Out", SearchOption.AllDirectories);
        }

        BuildLuaBundle(null, FileUtils.GetPathFromAssets(LuaConst.LuaExportTempDir) + "/Out", SearchOption.TopDirectoryOnly);

        AssetDatabase.Refresh();
        var assetPaths = AssetDatabase.FindAssets("", new[] { FileUtils.GetPathFromAssets(LuaConst.LuaExportTempDir) })
                         .Select(AssetDatabase.GUIDToAssetPath).ToArray();

        var    assetBundleBuilds = BuildScript.GetAssetBundleBuilds(assetPaths);
        string output            = Application.streamingAssetsPath + "/" + LuaConst.osDir;
        BuildPipeline.BuildAssetBundles(output, assetBundleBuilds.ToArray(), GetBuildAssetBundleOptions(), EditorUserBuildSettings.activeBuildTarget);
        //Directory.Delete(Application.dataPath + "/temp/", true);
        if (LuaConst.RemoveLuaExportTempDir)
        {
            FileUtils.DelDir(LuaConst.LuaExportTempDir, true);
        }
#else
        for (int i = 0; i < dirs.Count; i++)
        {
            string str = dirs[i].Remove(0, sourceDir.Length);
            BuildLuaBundle(str.Replace('\\', '/'), "Assets/StreamingAssets/Lua/Out");
        }

        BuildLuaBundle(null, "Assets/StreamingAssets/Lua/Out/");
        Directory.Delete(tempDir, true);
#endif
        AssetDatabase.Refresh();
        Debug.Log("BuildLuaBundles finish");
    }
Exemplo n.º 2
0
    private static void MarkBundlesAndBuild(bool buildBundle)
    {
        Debug.Log("MarkBundlesAndBuild 111");
        ClearAllLuaFiles();
        CreateStreamDir(GetOS() + "/" + LuaConst.LuaPrefixPath);

#if !UNITY_5 && !UNITY_2017
        string tempDir = CreateStreamDir("Lua");
#else
        string tempDir = LuaConst.LuaExportTempDir;

        //if (!File.Exists(tempDir))
        //{
        //    Directory.CreateDirectory(tempDir);
        //}

        FileUtils.CreateDirectory(tempDir);
#endif
        FileUtils.ClearDirectoryReadOnly(tempDir);
        Debug.Log("MarkBundlesAndBuild ClearDirectoryReadOnly 222");
        CopyLuaBytesFiles(LuaConst.luaDir, tempDir);
        CopyLuaBytesFiles(LuaConst.toluaDir, tempDir);

        AssetDatabase.Refresh();
        Debug.Log("MarkBundlesAndBuild AssetDatabase.Refresh 333");
        List <string> dirs = new List <string>();
        GetAllDirs(tempDir, SearchOption.TopDirectoryOnly, dirs);

#if UNITY_5 || UNITY_2017
        for (int i = 0; i < dirs.Count; i++)
        {
            string str = dirs[i].Remove(0, tempDir.Length);
            BuildLuaBundle(str.Replace('\\', '/'), FileUtils.GetPathFromAssets(LuaConst.LuaExportTempDir),
                           SearchOption.AllDirectories);
        }
        Debug.Log("MarkBundlesAndBuild BuildLuaBundle 4444");
        BuildLuaBundle(null, FileUtils.GetPathFromAssets(LuaConst.LuaExportTempDir), SearchOption.TopDirectoryOnly);

        AssetDatabase.SaveAssets();
        var assetPaths = AssetDatabase.FindAssets("", new[] { FileUtils.GetPathFromAssets(LuaConst.LuaExportTempDir) })
                         .Select(AssetDatabase.GUIDToAssetPath).ToArray();

        Debug.Log("MarkBundlesAndBuild GetAssetBundleBuilds 555");
        var    assetBundleBuilds = BuildScript.GetAssetBundleBuilds(assetPaths);
        string output            = Application.streamingAssetsPath + "/" + LuaConst.osDir;
        if (buildBundle)
        {
            BuildPipeline.BuildAssetBundles(output, assetBundleBuilds.ToArray(), GetBuildAssetBundleOptions(), EditorUserBuildSettings.activeBuildTarget);
        }

        Debug.Log("MarkBundlesAndBuild GetAssetBundleBuilds 6666");
        //Directory.Delete(Application.dataPath + "/temp/", true);
#else
        for (int i = 0; i < dirs.Count; i++)
        {
            string str = dirs[i].Remove(0, tempDir.Length);
            BuildLuaBundle(str.Replace('\\', '/'), "Assets/StreamingAssets/Lua");
        }

        BuildLuaBundle(null, "Assets/StreamingAssets/Lua");
        Directory.Delete(Application.streamingAssetsPath + "/Lua/", true);
#endif
        AssetDatabase.Refresh();
    }