public static void ClearBundlesMenu() { AssetDatabase.StartAssetEditing(); FramesDirectoriesListingFunc listFunc = (frameDirectory, progress, frameId, level, gender, language, resolution) => { var files = Directory.GetFiles(frameDirectory); foreach (var file in files) { bool cancelled = EditorUtility.DisplayCancelableProgressBar("Clear bundles", frameDirectory, progress); AssetImporter imp = AssetImporter.GetAtPath(file); if (imp == null) { continue; } imp.assetBundleName = ""; if (cancelled) { throw new Exception("Stopped by user"); } } }; ListFramesDirectories(dataPath + framesPath, listFunc); AssetDatabase.StopAssetEditing(); EditorUtility.ClearProgressBar(); }
public static void ClearFrames(string directory) { try { FramesDirectoriesListingFunc listFunc = (frameDirectory, progress, frameId, level, gender, language, resolution) => { bool cancelled = EditorUtility.DisplayCancelableProgressBar("Clearing frames", frameDirectory, progress); var files = Directory.GetFiles(frameDirectory); foreach (var file in files) { if (file.EndsWith(".prefab") || file.EndsWith(".anim") || file.EndsWith(".controller") || file.Contains("frame_")) { AssetDatabase.DeleteAsset(file); } } if (cancelled) { throw new Exception("Stopped by user"); } }; ListFramesDirectories(directory, listFunc); } catch (Exception ex) { Debug.LogError("Frames clearing failed: " + ex.Message); } EditorUtility.ClearProgressBar(); }
private static void ListFramesDirectories(string directory, FramesDirectoriesListingFunc listFunction) { var framesDirectories = Directory.GetDirectories(directory); for (int i = 0; i < framesDirectories.Length; i++) { float frameDirectoryProgressStep = 1.0f / (float)framesDirectories.Length; float frameDirectoryProgress = (float)i * frameDirectoryProgressStep; string frameId = Path.GetFileNameWithoutExtension(framesDirectories[i]); var levelsDirectories = Directory.GetDirectories(framesDirectories[i]); for (int j = 0; j < levelsDirectories.Length; j++) { float levelDirectoryProgressStep = 1.0f / (float)levelsDirectories.Length * frameDirectoryProgressStep; float levelDirectoryProgress = (float)j * levelDirectoryProgressStep + frameDirectoryProgress; string level = Path.GetFileNameWithoutExtension(levelsDirectories[j]); var genderDirectories = Directory.GetDirectories(levelsDirectories[j]); for (int k = 0; k < genderDirectories.Length; k++) { float genderDirectoryProgressStep = 1.0f / (float)genderDirectories.Length * levelDirectoryProgressStep; float genderDirectoryProgress = (float)k * genderDirectoryProgressStep + levelDirectoryProgress; string gender = Path.GetFileNameWithoutExtension(genderDirectories[k]); var languageDirectories = Directory.GetDirectories(genderDirectories[k]); for (int l = 0; l < languageDirectories.Length; l++) { float languageDirectoryProgressStep = 1.0f / (float)languageDirectories.Length * genderDirectoryProgressStep; float languageDirectoryProgress = (float)l * languageDirectoryProgressStep + genderDirectoryProgress; string language = Path.GetFileNameWithoutExtension(languageDirectories[l]); var resolutionDirectories = Directory.GetDirectories(languageDirectories[l]); for (int m = 0; m < resolutionDirectories.Length; m++) { float resolutionDirectoryProgressStep = 1.0f / (float)resolutionDirectories.Length * languageDirectoryProgressStep; float resolutionDirectoryProgress = (float)m * resolutionDirectoryProgressStep + languageDirectoryProgress; string resolution = Path.GetFileNameWithoutExtension(resolutionDirectories[m]); listFunction(resolutionDirectories[m], resolutionDirectoryProgress, frameId, level, gender, language, resolution); } } } } } }
public static void CopyFramesAssetsFromStatic(string staticPath, string dataPath) { AssetDatabase.StartAssetEditing(); try { FramesDirectoriesListingFunc listFunc = (frameDirectory, progress, frameId, level, gender, language, resolution) => { bool cancelled = EditorUtility.DisplayCancelableProgressBar("Copying frames resources", frameDirectory, progress); string frameDataPath = dataPath + "/" + frameId + "/" + level + "/" + gender + "/" + language + "/" + resolution; if (Directory.Exists(frameDataPath)) { return; } Directory.CreateDirectory(frameDataPath); var files = Directory.GetFiles(frameDirectory); foreach (var file in files) { File.Copy(file, frameDataPath + "/" + Path.GetFileName(file), true); } if (cancelled) { throw new Exception("Stopped by user"); } }; ListFramesDirectories(staticPath, listFunc); } catch (Exception ex) { Debug.LogError("Frames resources copying failed: " + ex.Message); } EditorUtility.ClearProgressBar(); AssetDatabase.StopAssetEditing(); AssetDatabase.Refresh(); }
private static void SetFramesTexturesPlatformSettings(string directory, TextureImporterPlatformSettings settings) { AssetDatabase.StartAssetEditing(); FramesDirectoriesListingFunc listFunc = (frameDirectory, progress, frameId, level, gender, language, resolution) => { string frameDataPath = dataPath + "/" + frameId + "/" + level + "/" + gender + "/" + language + "/" + resolution; var files = Directory.GetFiles(frameDirectory); foreach (var file in files) { var importer = AssetImporter.GetAtPath(file) as TextureImporter; if (importer == null) { continue; } bool cancelled = EditorUtility.DisplayCancelableProgressBar("Setting texture format: " + settings.format.ToString(), file, progress); var currSettings = importer.GetPlatformTextureSettings(settings.name); if (currSettings.format == settings.format && currSettings.maxTextureSize == settings.maxTextureSize) { continue; } importer.SetPlatformTextureSettings(settings); if (cancelled) { throw new Exception("Stopped by user"); } } }; ListFramesDirectories(directory, listFunc); AssetDatabase.StopAssetEditing(); }
public static void RebuildFrames(bool forcible, string directory) { AssetDatabase.StartAssetEditing(); if (forcible) { ClearFrames(directory); } try { FramesDirectoriesListingFunc listFunc = (frameDirectory, progress, frameId, level, gender, language, resolution) => { bool cancelled = EditorUtility.DisplayCancelableProgressBar("Rebuilding frames", frameDirectory, progress); if (!File.Exists(frameDirectory + "/" + framePrefabName)) { GenerateFramePrefab(frameDirectory, frameId, level, gender, language, resolution); } if (cancelled) { throw new Exception("Stopped by user"); } }; ListFramesDirectories(directory, listFunc); } catch (Exception ex) { Debug.LogError("Frames rebuild failed: " + ex.Message); } EditorUtility.ClearProgressBar(); AssetDatabase.StopAssetEditing(); AssetDatabase.Refresh(); }
public static void RebuildFramesFast() { FramesDirectoriesListingFunc listFunc = (frameDirectory, progress, frameId, level, gender, language, resolution) => { bool cancelled = EditorUtility.DisplayCancelableProgressBar("Rebuilding frames", frameDirectory, progress); Debug.Log("------ Frame:" + frameDirectory); AssetDatabase.StartAssetEditing(); // Copy files if (!Directory.Exists(dataPath)) { Directory.CreateDirectory(dataPath); } var files = Directory.GetFiles(frameDirectory); foreach (var file in files) { File.Copy(file, dataPath + "/" + Path.GetFileName(file)); } AssetDatabase.StopAssetEditing(); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); AssetDatabase.StartAssetEditing(); Debug.Log("Files copied"); // Build prefab GenerateFramePrefab(dataPath, frameId, level, gender, language, resolution); AssetDatabase.StopAssetEditing(); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); AssetDatabase.StartAssetEditing(); Debug.Log("Prefab generated"); // Set bundle string bundleName = "frame_" + frameId + "_" + level + "_" + gender + "_" + language + "_" + resolution; files = Directory.GetFiles(dataPath); foreach (var file in files) { AssetImporter imp = AssetImporter.GetAtPath(file); if (imp == null) { continue; } imp.assetBundleName = bundleName; } AssetDatabase.SaveAssets(); AssetDatabase.StopAssetEditing(); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); Debug.Log("Setted bundle"); string bundlesPath = assetBundlesPath + "/Android/"; if (!Directory.Exists(bundlesPath)) { Directory.CreateDirectory(bundlesPath); } var options = BuildAssetBundleOptions.None; // | BuildAssetBundleOptions.ForceRebuildAssetBundle; var manifest = BuildPipeline.BuildAssetBundles(assetBundlesPath + "/Android/", options, BuildTarget.Android); Debug.Log("Created bundle"); foreach (var file in files) { File.Delete(file); } Debug.Log("Removed files"); File.Copy(bundlesPath + bundleName, staticResourcesPath + framesBundlesPath + "/" + bundleName); Directory.Delete(bundlesPath, true); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); Debug.Log("Bundle copied"); if (cancelled) { throw new Exception("Stopped by user"); } }; try { ListFramesDirectories(staticResourcesPath + framesPath, listFunc); } catch (Exception ex) { //AssetDatabase.StopAssetEditing(); EditorUtility.ClearProgressBar(); Debug.LogError("Frames rebuild failed: " + ex.Message); } }
private static void BuildAndroidAssetBundles() { Dictionary <string, TextureImporterFormat> formats = new Dictionary <string, TextureImporterFormat>() { { "PVR", TextureImporterFormat.PVRTC_RGBA4 }, { "DXT", TextureImporterFormat.DXT5 } }; foreach (var kv in formats) { TextureImporterPlatformSettings textureSettings = new TextureImporterPlatformSettings(); textureSettings.maxTextureSize = 2048; textureSettings.name = "Android"; textureSettings.format = kv.Value; //SetFramesTexturesPlatformSettings(dataPath + framesPath, textureSettings); Debug.Log("Building android asset bundles for " + kv.Key); string assetsBundlesPath = assetBundlesPath + "/Android/" + kv.Key; if (!Directory.Exists(assetsBundlesPath)) { Directory.CreateDirectory(assetsBundlesPath); } // var options = BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.ForceRebuildAssetBundle; // var manifest = BuildPipeline.BuildAssetBundles(assetBundlesPath + "/Android/" + kv.Key, options, BuildTarget.Android); // FramesDirectoriesListingFunc listFunc = (frameDirectory, progress, frameId, level, gender, language, resolution) => { bool cancelled = EditorUtility.DisplayCancelableProgressBar("Building bundle", frameDirectory, progress); var files = Directory.GetFiles(frameDirectory); foreach (var file in files) { AssetImporter imp = AssetImporter.GetAtPath(file); if (imp == null) { continue; } imp.assetBundleName = "frames/" + frameId + "/" + level + "/" + gender + "/" + language + "/" + resolution; } var options = BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.ForceRebuildAssetBundle; var manifest = BuildPipeline.BuildAssetBundles(assetBundlesPath + "/Android/" + kv.Key, options, BuildTarget.Android); foreach (var file in files) { AssetImporter imp = AssetImporter.GetAtPath(file); imp.assetBundleName = ""; } if (cancelled) { throw new Exception("Stopped by user"); } }; ListFramesDirectories(dataPath + framesPath, listFunc); } }