예제 #1
0
    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();
    }
예제 #2
0
    public static void UpdateBorder()
    {
        string[]        dirs   = Directory.GetDirectories(PathUtil.GetFullPath(PathConfig.atlasTargetPath));
        UGUIAtlasWorker worker = new UGUIAtlasWorker();

        Process(UpdateBorderProcessor, dirs, worker);
        Resources.UnloadUnusedAssets();
        AssetDatabase.Refresh();
    }
예제 #3
0
    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();
    }
예제 #4
0
    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();
    }
예제 #5
0
 public static void UpdateBorderProcessor(AtlasPath path, UGUIAtlasWorker worker, object param)
 {
     worker.UpdateBorder(path.texPath);
 }
예제 #6
0
 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);
 }
예제 #7
0
 public static void RemoveUnUsedProcessor(AtlasPath path, UGUIAtlasWorker worker, object param)
 {
     PathUtil.DeleteFileOrFolder(path.sysDir);
 }
예제 #8
0
 public static void GenMaterialProcessor(AtlasPath path, UGUIAtlasWorker worker, object param)
 {
     worker.GenMaterial(path.targetPath, path.texPath, path.alphaTexPath, (Shader)param, path.filePrefix);
 }
예제 #9
0
 public static void SplitAlphaProcessor(AtlasPath path, UGUIAtlasWorker worker, object param)
 {
     worker.SplitAlpha(path.texPath, path.alphaTexPath);
 }
예제 #10
0
 public static void GenAtlasProcessor(AtlasPath path, UGUIAtlasWorker worker, object param)
 {
     worker.GenAtlas(path.dir, path.targetPath, path.filePrefix, (string)param);
 }