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"); }
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(); }