public static void GenAtlas() { LoadConfig(); string[] dirs = config.GetChangedDir(); PathUtil.EnsuerFolder(PathUtil.GetFullPath("Atlas")); // 召唤一个工人 ㄟ( ▔ , ▔ )ㄏ UGUIAtlasWorker worker = new UGUIAtlasWorker(); Shader shader = AssetDatabase.LoadAssetAtPath <Shader>("Assets/Shader/UI-Default.shader"); // work work (╯‵□′)╯︵┻━┻(摔!) if (dirs.Length > 0) { Process(GenAtlasProcessor, dirs, worker, FormatArg()); Process(SplitAlphaProcessor, dirs, worker); // mark readable Process(UpdateBorderProcessor, dirs, worker); Process(UpdateSettingProcessor, dirs, worker); // isReadable = false Process(GenMaterialProcessor, dirs, worker, shader); TTLoger.Log("哦!太感动了,居然成功了!"); } else { TTLoger.Log("无美术资源变化,不需生成!"); } dirs = config.GetRemovedList(); Process(RemoveUnUsedProcessor, dirs, worker); // 验收记录 Y( ̄o ̄)Y config.UpdateAndGetChangedAtlas(); EditorUtility.SetDirty(config); shader = null; Resources.UnloadUnusedAssets(); AssetDatabase.Refresh(); }
public static void UpdateBorder() { string[] dirs = Directory.GetDirectories(PathUtil.GetFullPath(PathConfig.atlasTargetPath)); UGUIAtlasWorker worker = new UGUIAtlasWorker(); Process(UpdateBorderProcessor, dirs, worker); Resources.UnloadUnusedAssets(); AssetDatabase.Refresh(); }
public static void AssignTex2Mat() { string[] dirs = Directory.GetDirectories(PathUtil.GetFullPath(PathConfig.atlasTargetPath)); UGUIAtlasWorker worker = new UGUIAtlasWorker(); Shader shader = AssetDatabase.LoadAssetAtPath <Shader>("Assets/Shader/UI-Default.shader"); Process(GenMaterialProcessor, dirs, worker, shader); shader = null; Resources.UnloadUnusedAssets(); AssetDatabase.Refresh(); }
public static void Process(Action <AtlasPath, UGUIAtlasWorker, object> processor, string[] dirs, UGUIAtlasWorker worker, object param = null) { AtlasPath path = new AtlasPath(); for (int i = 0; i < dirs.Length; ++i) { path.FormatPath(dirs[i]); processor(path, worker, param); } AssetDatabase.Refresh(); }
public static void UpdateBorderProcessor(AtlasPath path, UGUIAtlasWorker worker, object param) { worker.UpdateBorder(path.texPath); }
public static void UpdateSettingProcessor(AtlasPath path, UGUIAtlasWorker worker, object param) { worker.UpdateSetting(path.texPath, TextureImporterFormat.ETC_RGB4, TextureImporterFormat.PVRTC_RGB4); worker.UpdateSetting(path.alphaTexPath, TextureImporterFormat.ETC_RGB4, TextureImporterFormat.PVRTC_RGB4); }
public static void RemoveUnUsedProcessor(AtlasPath path, UGUIAtlasWorker worker, object param) { PathUtil.DeleteFileOrFolder(path.sysDir); }
public static void GenMaterialProcessor(AtlasPath path, UGUIAtlasWorker worker, object param) { worker.GenMaterial(path.targetPath, path.texPath, path.alphaTexPath, (Shader)param, path.filePrefix); }
public static void SplitAlphaProcessor(AtlasPath path, UGUIAtlasWorker worker, object param) { worker.SplitAlpha(path.texPath, path.alphaTexPath); }
public static void GenAtlasProcessor(AtlasPath path, UGUIAtlasWorker worker, object param) { worker.GenAtlas(path.dir, path.targetPath, path.filePrefix, (string)param); }