static void ExportTexture(Texture2D _saveTexture, string _name, enum_TextureExportType _exportType)
        {
            string extend = "";

            switch (_exportType)
            {
            default: throw new Exception("Invalid Export Type:" + _exportType);

            case enum_TextureExportType.JPG: extend = "jpg"; break;

            case enum_TextureExportType.PNG: extend = "png"; break;

            case enum_TextureExportType.TGA: extend = "tga"; break;

            case enum_TextureExportType.EXR: extend = "exr"; break;
            }


            if (!UEAsset.SaveFilePath(out string filePath, extend, _name + "_M"))
            {
                return;
            }
            byte[] bytes = null;
            switch (_exportType)
            {
            case enum_TextureExportType.TGA: bytes = _saveTexture.EncodeToTGA(); break;

            case enum_TextureExportType.EXR: bytes = _saveTexture.EncodeToEXR(); break;

            case enum_TextureExportType.JPG: bytes = _saveTexture.EncodeToJPG(); break;

            case enum_TextureExportType.PNG: bytes = _saveTexture.EncodeToPNG(); break;
            }
            UEAsset.CreateOrReplaceFile(filePath, bytes);
        }
        private void OnGUI()
        {
            HorizontalScope.Begin(5, 5, 18);
            EditorGUI.LabelField(HorizontalScope.NextRect(0, 80), "Editor Mode:", UEGUIStyle_Window.m_TitleLabel);
            m_EditorMode = (enum_TextureEditorMode)EditorGUI.EnumPopup(HorizontalScope.NextRect(5, 100), m_EditorMode);

            HorizontalScope.NextLine(2, 20);
            var textureEditor = m_Editors[m_EditorMode];

            if (!textureEditor.OnGUIExportValid(ref m_TargetTexture, UpdateTexture))
            {
                return;
            }

            EditorGUI.BeginChangeCheck();
            HorizontalScope.NextLine(2, 18);
            EditorGUI.LabelField(HorizontalScope.NextRect(0, 60), "Display:", UEGUIStyle_Window.m_TitleLabel);
            HorizontalScope.NextLine(2, 18);
            EditorGUI.LabelField(HorizontalScope.NextRect(0, 60), "Visualize:");
            m_ColorVisualize = (enum_ColorVisualize)EditorGUI.EnumPopup(HorizontalScope.NextRect(5, 40), m_ColorVisualize);

            if (EditorGUI.EndChangeCheck())
            {
                UpdateDisplayTexture();
            }

            HorizontalScope.NextLine(2, 256);
            Rect textureRect = HorizontalScope.NextRect(0, 256);

            GUI.DrawTexture(textureRect, EditorGUIUtility.whiteTexture);
            GUI.DrawTexture(textureRect.Collapse(Vector2.one * 10f), m_DisplayTexture);
            HorizontalScope.NextLine(2, 20);

            HorizontalScope.NextLine(2, 18);
            EditorGUI.LabelField(HorizontalScope.NextRect(5, 50), "Export:", UEGUIStyle_Window.m_TitleLabel);
            m_TextureExportType = (enum_TextureExportType)EditorGUI.EnumPopup(HorizontalScope.NextRect(0, 50), m_TextureExportType);
            if (GUI.Button(HorizontalScope.NextRect(20, 80), "Export"))
            {
                ExportTexture(m_TargetTexture, m_TargetTexture.name, m_TextureExportType);
            }
        }