using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEditor;
using UnityEngine;
using Debug = UnityEngine.Debug;
namespace Typhoon.TableTool
{
///
/// 设置菜单
///
public class SettingEditorWindow : EditorWindow
{
[Serializable]
public class PackageJson
{
//版本号
public string version;
}
private static string RootPath
{
get
{
var path1 = "Packages/com.typhoon.tabletool";
var path2 = "Assets/com.typhoon.tabletool";
if (Directory.Exists(path1))
{
return new DirectoryInfo(path1).FullName;
}
if (Directory.Exists(path2))
{
return new DirectoryInfo(path2).FullName;
}
throw new Exception("找不到路径");
}
}
//配置表安装资源包
private static string EXCEL_2_JSON_INSTALL_SOURCE => $"{RootPath}/Editor/Excel2Json~";
//导表程序
private static string EXCEL_2_JSON_EXE_PATH => $"{EXCEL_2_JSON_INSTALL_FOLDER}/Typhoon.Excel2Json.exe";
//配置表安装路径
private static string EXCEL_2_JSON_INSTALL_FOLDER => "配置表工具";
//配置表文件夹
private static string TABLE_FOLDER => $"{EXCEL_2_JSON_INSTALL_FOLDER}/table";
//table.md文件路径
private static string TABLE_MD_FILE => $"{TABLE_FOLDER}/table.md";
//package.json路径
private static string PACKAGE_JSON => $"{RootPath}/package.json";
//配置模板
private static string CONFIG_TEMPLATE => $"{RootPath}/Editor/template/Config.template";
//tabletool生成文件夹
private static string GENERATE_TABLE_TOOL_PATH => $"Assets/Typhoon_Gen/TableTool";
//导出文件夹
private static string GENERATE_TABLE_TOOL_EXPORT_PATH => $"Assets/Typhoon_Gen/TableTool/Export";
//配置代码
private static string CONFIG_PATH => $"{GENERATE_TABLE_TOOL_PATH}/Config.cs";
//TableHelper.cs模板(Resource模式)
private static string TABLE_HELPER_RESOURCE_MODE_TEMPLATE =
$"{RootPath}/Editor/template/TableHelper_ResourceMode.template";
//TableHelper.cs模板(Addressable模式)
private static string TABLE_HELPER_ADDRESSABLE_MODE_TEMPLATE =
$"{RootPath}/Editor/template/TableHelper_AddressableMode.template";
//TableTool.cs导出路径
private static string TABLE_TOOL_CSHARP_PATH => $"{GENERATE_TABLE_TOOL_PATH}/TableHelper.cs";
private const string lOGO_BASE64 =
"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9VUl/1CcBADAu8RNx447bmi6019ySXRnPa1mfxtqqCoV4guVPfaIghiK2zXXNDbeckvxXugNd88+Gy21eOmljo7lyzf8++OlDEMVrKXd7G9DxZUK996bbKXCO5c6MTLk8x0duVwI3d3Llin5h+ImAADe5fjjozWx48eXlo4dm9w4K1ZEa5dvuSVaWz9cxBd4f/pTbe1VVw1sr5WUuFQ56Z8HgxNfmN5xR0vLgw+mPZuRo68vn+/rC+Gii2prr71245/nsMOmTNl33xA22aSycsaM5Obb3BwFmcXS7G9DXXBBbe011yTfqyBe6pT0z4Oh0d19881VVSHk8+3tSS6BAgbPWxT4qx12GDNmwYJoreZOOyU3TrE2+9tQr73W2blyZQi33NLUdO+9yY0TV2TE3bQpbuedV1OzaFHhutRn3Z//HF34v/zyxr2es2dXVEyfHsKhh06Zsvfeyc93qC6gkxIHGIsW1dcvXZrcOJY6jQz9/a+/XloaQm/vM8+U6SwGw4IAAPhrc78TTpgx48gjkx8vvkP63HNr177yStpHP3iXXlpff8MNA2vBkxI36dp229Gjt9467aNmXbq6+vu7u0M49dQVK844I2p29uyzac9q+Ii3vzz33CggvPHGpqY77tjw54kvKE86aebMY44ZWAKQlKEqoR8q8eseV2olxVKn4Spq7tfVdeONVVUhWPgEw4cAAAhHH11dfdBBIUyfXl4+ZUpy48TbkV18cW1tMTf72/jjSrY5YHxBc+KJUVCT9AUNgxM3jfzVr1auPOusEH73uzff/OMfB7bvIxJf8N92W0vLAw+EcMopr776y1+GsHRpU9Pdd2/88+6776RJu+0Wwvz5o0Ztvnly848rmM49d/XqK64YOT0gBo4rCmKSPi5LnYaX7u5oe7/+/sZGJf8wvPjoCBkWb/d0wAGTJu2xR/LjXXZZdKe8paWvr60t7aMvvNtvb25+4IEQPvvZCRM++ckQtt561Kh58wo/zsyZFRXTpoXwuc9NnrzXXiFcdVVDw803p330fJAHHmhre+KJgccttqiq2nTTEHbeedy47bcP4SMfiXbbmDevsnKTTZLfTnCo1dX19DQ2hvCXv0R3yh99NNoG7vHH29ufe24gSBuseHvOY46prj744OSPK272t3x5snfK0/L881Gl1v33t7Y+/ngIu+46fnwS207GS52O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";
private const string SETTING_BASE64 =
"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";
//说明文档路径
private static string DOCUMENT_PATH => $"{RootPath}/Documentation~/README.pdf";
private static Texture2D _settingIcon;
private static Texture2D SettingIcon
{
get
{
if (_settingIcon == null)
{
_settingIcon = new Texture2D(128, 128, TextureFormat.RGBA32, false);
byte[] data = System.Convert.FromBase64String(SETTING_BASE64);
_settingIcon.LoadImage(data);
}
return _settingIcon;
}
}
private static Texture2D _logoIcon;
private static Texture2D LogoIcon
{
get
{
if (_logoIcon == null)
{
_logoIcon = new Texture2D(128, 128, TextureFormat.RGBA32, false);
byte[] data = System.Convert.FromBase64String(lOGO_BASE64);
_logoIcon.LoadImage(data);
}
return _logoIcon;
}
}
private static Texture2D _errorIcon = null;
private static Texture2D ErrorIcon
{
get
{
if (_errorIcon == null)
{
_errorIcon = (Texture2D)typeof(EditorGUIUtility).GetMethod("LoadIcon",
BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.FlattenHierarchy).Invoke((object)null, new object[1]
{
(object)"console.erroricon"
});
}
return _errorIcon;
}
}
[MenuItem("配置表工具/选项")]
private static void Open()
{
var win = GetWindow();
win.minSize = new Vector2(300, 400);
win.maxSize = win.minSize;
win.titleContent = new GUIContent("配置表工具", SettingIcon);
win.Show();
}
[MenuItem("配置表工具/打开文件夹")]
private static void OpenTableFolder()
{
//尝试修复文件
CheckAndRepair();
try
{
//定位到文件夹
EditorUtility.RevealInFinder(TABLE_MD_FILE);
}
catch (Exception e)
{
Debug.LogError($"找不到:{TABLE_MD_FILE}");
}
}
[MenuItem("配置表工具/打开文件夹", true)]
private static bool OpenTableFolderMenuItemValid()
{
if (IsInstall())
{
return true;
}
return false;
}
[MenuItem("配置表工具/一键导表")]
private static void OnKeyExport()
{
Export();
}
[MenuItem("配置表工具/一键导表", true)]
private static bool OnKeyExportMenuItemValid()
{
if (IsInstall())
{
return true;
}
return false;
}
[MenuItem("配置表工具/说明文档")]
private static void OpenDocument()
{
EditorUtility.OpenWithDefaultApp(DOCUMENT_PATH);
}
private string _versionCode = null;
//是否安装addressable
private bool _isInstallAddressable = false;
//反射属性:AddressableAssetSettingsDefaultObject.Settings
private object _aaDefaultSettings = null;
private void OnEnable()
{
Init();
try
{
var json = File.ReadAllText(PACKAGE_JSON);
var packageJson = JsonUtility.FromJson(json);
_versionCode = packageJson.version;
}
catch (Exception e)
{
}
}
private void OnGUI()
{
var temCol = GUI.color;
if (EditorApplication.isCompiling)
{
GUILayout.Label("编译中,请稍等...");
}
else
{
#region Logo,版本号
Rect rect = new Rect(0, 0, position.width, position.height);
Rect logoBgRect = new Rect(rect);
logoBgRect.height = 64;
Rect logoRect = new Rect(logoBgRect);
logoRect.y += 8;
logoRect.height = 48;
var style = new GUIStyle(EditorStyles.whiteBoldLabel);
style.alignment = TextAnchor.MiddleCenter;
style.normal.textColor = GUI.skin.button.normal.textColor;
var blockRect = new Rect(logoRect);
blockRect.width -= 16;
blockRect.x += 8;
GUI.Label(blockRect, "", EditorStyles.helpBox);
GUI.Label(logoRect, new GUIContent("配置表工具", LogoIcon), style);
//版本号
Rect versionRect = new Rect(blockRect);
versionRect.width = 100;
versionRect.height = 22;
versionRect.x = blockRect.xMax - versionRect.width;
versionRect.y = blockRect.yMax - versionRect.height;
versionRect.x -= 4;
versionRect.y -= 4;
GUI.color = new Color(0.05f, 0.54f, 0.86f, 1f);
var styleLinkLab = new GUIStyle(EditorStyles.boldLabel);
styleLinkLab.alignment = TextAnchor.LowerRight;
if (_versionCode != null)
{
GUI.Label(versionRect, $"版本:{_versionCode}", styleLinkLab);
}
GUI.color = temCol;
#endregion
#region 安装,卸载
bool isInstall = IsInstall();
Rect btnSetUp = new Rect(logoBgRect);
btnSetUp.y += btnSetUp.height;
btnSetUp.height = 32;
btnSetUp.y += 2;
btnSetUp.width = 200;
btnSetUp.x = rect.center.x - 100;
if (isInstall)
{
//卸载
GUI.color = new Color(0.86f, 0.31f, 0.25f, 1f);
if (GUI.Button(btnSetUp, "卸载"))
{
Uninstall();
}
GUI.color = temCol;
}
else
{
//判断
GUI.color = new Color(0.58f, 1f, 0.4f, 1f);
if (GUI.Button(btnSetUp, "安装"))
{
Install();
}
GUI.color = temCol;
}
#endregion
#region 设置窗口
Rect preferenceRect = new Rect(0, btnSetUp.yMax, rect.width, rect.height);
preferenceRect.y += 10;
preferenceRect.height = rect.height - preferenceRect.y;
preferenceRect.width -= 16;
preferenceRect.x += 8;
if (isInstall)
{
GUILayout.BeginArea(preferenceRect);
if (Preference.Instance != null)
{
var labLength = 80;
#region 加载方式
GUILayout.Label("", GUI.skin.horizontalSlider, GUILayout.Height(22));
GUILayout.BeginHorizontal();
GUILayout.Label("加载方式:", EditorStyles.boldLabel, GUILayout.Width(labLength));
Preference.Instance.LoadMode = (LoadMode)EditorGUILayout.EnumPopup(new GUIContent(""),
Preference.Instance.LoadMode, LoadModeEnumFunc, true);
GUILayout.EndHorizontal();
#endregion
#region 文件类型
GUILayout.BeginHorizontal();
GUILayout.Label("文件类型:", EditorStyles.boldLabel, GUILayout.Width(labLength));
Preference.Instance.FileType =
(JsonFileType)EditorGUILayout.EnumPopup(Preference.Instance.FileType);
GUILayout.EndHorizontal();
#endregion
if (Preference.Instance.LoadMode == LoadMode.Addressable)
{
#region 自定义addressable路径
//addressable组
IList groups = null;
if (_aaDefaultSettings != null)
{
groups = (IList)GetPropValue(_aaDefaultSettings, "groups");
}
if (groups != null)
{
GUILayout.BeginHorizontal();
GUILayout.Label("Group:", EditorStyles.boldLabel, GUILayout.Width(labLength));
List groupsName = new List();
groupsName.Add("---");
foreach (var element in groups)
{
//获取name属性
string name = GetPropValue(element, "Name") as string;
groupsName.Add(name);
}
var selectIndex = 0;
for (int i = 0; i < groups.Count; i++)
{
var guid = GetPropValue(groups[i], "Guid") as string;
if (Preference.Instance.AddressableGroupGuid == guid)
{
selectIndex = i + 1;
}
}
var temSelectIndex = selectIndex;
selectIndex = EditorGUILayout.Popup(selectIndex, groupsName.ToArray());
if (temSelectIndex != selectIndex && selectIndex > 0)
{
var group = groups[selectIndex - 1];
var guid = GetPropValue(group, "Guid") as string;
Preference.Instance.AddressableGroupGuid = guid;
}
GUILayout.EndHorizontal();
//导出路径
GUILayout.BeginHorizontal();
GUILayout.Label("Address:", EditorStyles.boldLabel, GUILayout.Width(labLength));
Preference.Instance.Address =
EditorGUILayout.TextField(Preference.Instance.Address);
if (string.IsNullOrWhiteSpace(Preference.Instance.Address))
{
var lastRect = GUILayoutUtility.GetLastRect();
GUI.Label(lastRect, "不填使用默认值", EditorStyles.centeredGreyMiniLabel);
}
GUILayout.EndHorizontal();
}
else
{
var styleHelpBox = new GUIStyle(EditorStyles.helpBox);
styleHelpBox.fontSize = 12;
// GUI.color = Color.red;
GUILayout.Label(new GUIContent("找不到Addressable Setting\n", ErrorIcon),
styleHelpBox);
if (Event.current.type == EventType.Repaint)
{
var lastRect = GUILayoutUtility.GetLastRect();
var btnCreateAddressableRect = new Rect(lastRect);
//btnCreateAddressableRect
btnCreateAddressableRect.height = 22;
btnCreateAddressableRect.width = 40;
btnCreateAddressableRect.x = lastRect.xMax - btnCreateAddressableRect.width;
btnCreateAddressableRect.y =
lastRect.center.y - btnCreateAddressableRect.height * 0.5f;
btnCreateAddressableRect.x -= 10;
}
if (GUILayout.Button("去创建"))
{
OpenAddressableWindow();
Event.current.Use();
}
}
#endregion
}
}
var temContentCol = GUI.backgroundColor;
GUI.backgroundColor = new Color(0.42f, 1f, 0.58f, 1f);
GUILayout.Space(3);
if (GUILayout.Button("保存配置并应用", GUILayout.Height(32)))
{
//生成配置
SavePreference();
Event.current.Use();
}
GUI.backgroundColor = temContentCol;
GUILayout.EndArea();
}
#endregion
}
}
private bool LoadModeEnumFunc(Enum loadMode)
{
switch (loadMode)
{
case LoadMode.Addressable:
return _isInstallAddressable;
}
return true;
}
#region 初始化
private void Init()
{
_isInstallAddressable = IsInstallAddressable();
_aaDefaultSettings = GetDefaultSettings();
}
#endregion
#region 检查
//是否已安装
private static bool IsInstall()
{
//是否已安装
if (File.Exists(EXCEL_2_JSON_EXE_PATH))
{
return true;
}
return false;
}
private static bool IsInstallAddressable()
{
return GetAssemblyByNameSpace("UnityEngine.AddressableAssets") != null;
}
#endregion
#region 安装
//安装
private void Install()
{
//如果存在对应的文件夹
DebugLogWithColor($"安装到目录-->{EXCEL_2_JSON_INSTALL_FOLDER}", "4ecb52");
try
{
//复制文件到指定目录
FileUtil.CopyFileOrDirectory(EXCEL_2_JSON_INSTALL_SOURCE, EXCEL_2_JSON_INSTALL_FOLDER);
}
catch (Exception e)
{
}
//创建table.md文件
CreateTableMdFile();
//创建配置文件
CreateConfigFile();
if (IsInstall())
{
if (EditorUtility.DisplayDialog(titleContent.text, "安装成功", "打开文件夹", "关闭"))
{
try
{
//定位到文件夹
EditorUtility.RevealInFinder(TABLE_FOLDER);
}
catch
{
}
}
}
}
//创建table md 文件
private static void CreateTableMdFile()
{
//如果不存在
if (File.Exists(TABLE_MD_FILE))
{
File.Delete(TABLE_MD_FILE);
}
try
{
var json = File.ReadAllText(PACKAGE_JSON);
var packageJson = JsonUtility.FromJson(json);
FileInfo info = new FileInfo(TABLE_MD_FILE);
var folder = info.Directory.FullName;
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
File.WriteAllText(TABLE_MD_FILE, packageJson.version);
}
catch
{
}
}
//生成配置文件
private static void CreateConfigFile()
{
var loadMode = Preference.Instance.LoadMode;
var fileType = Preference.Instance.FileType;
var code = File.ReadAllText(CONFIG_TEMPLATE);
code = code.Replace("$LoadMode", Preference.Instance.LoadMode.ToString());
code = code.Replace("$FileType", Preference.Instance.FileType.ToString());
var address = string.Empty;
var addressIsValid = CustomAddressableIsValid(Preference.Instance.AddressableGroupGuid);
switch (loadMode)
{
case LoadMode.Resource:
break;
case LoadMode.Addressable:
//校验addressable
switch (fileType)
{
case JsonFileType.Json:
address = Preference.PATH_ADDRESSABLE_EXPORT_JSON;
break;
case JsonFileType.Base64:
address = Preference.PATH_ADDRESSABLE_EXPORT_BYTES;
break;
}
if (addressIsValid)
{
//有效,使用自定义地址
address = Preference.Instance.Address;
}
break;
}
code = code.Replace("$Address", $"\"{address}\"");
//检查文件夹
CheckCreateFolder(GENERATE_TABLE_TOOL_PATH);
//生成代码
File.WriteAllText(CONFIG_PATH, code);
AssetDatabase.Refresh();
}
//保存配置
private void SavePreference()
{
EditorUtility.SetDirty(Preference.Instance);
AssetDatabase.SaveAssets();
CreateConfigFile();
}
#endregion
#region 卸载
//卸载
private void Uninstall()
{
if (EditorUtility.DisplayDialog(titleContent.text, "卸载配置表工具,不可撤销!", "是"))
{
if (Directory.Exists(EXCEL_2_JSON_INSTALL_FOLDER))
{
string backUpPath;
//备份配置表
if (BackUpTable(out backUpPath))
{
//删除
Directory.Delete(EXCEL_2_JSON_INSTALL_FOLDER, true);
EditorUtility.DisplayDialog(titleContent.text, $"卸载成功\n配置表备份路径:{backUpPath}", "关闭");
}
}
}
}
//备份table
private bool BackUpTable(out string backUpPath)
{
var guid = Guid.NewGuid();
string guidStr = guid.ToString("N");
var year = DateTime.Now.Year;
var month = DateTime.Now.Month;
var day = DateTime.Now.Day;
var hour = DateTime.Now.Hour;
var min = DateTime.Now.Minute;
var sec = DateTime.Now.Second;
var millisecond = DateTime.Now.Millisecond;
var path =
$"./配置表备份-{year}-{month}-{day}-{hour}{min.ToString().PadLeft(2, ' ')}{sec.ToString().PadLeft(2, ' ')}{millisecond.ToString().PadLeft(3, ' ')}";
backUpPath = path;
if (Directory.Exists(TABLE_FOLDER))
{
try
{
FileUtil.CopyFileOrDirectory(TABLE_FOLDER, path);
if (Directory.Exists(path))
{
var info = new DirectoryInfo(path);
backUpPath = info.FullName;
DebugLogWithColor($"备份配置表->{info.FullName}", "62e76e");
}
return true;
}
catch (Exception e)
{
}
}
return false;
}
#endregion
#region 修复
//检查并修复
private static void CheckAndRepair()
{
//如果安装
if (IsInstall())
{
//补充文件夹
CheckCreateFolder(TABLE_FOLDER);
//补充table.md
if (!File.Exists(TABLE_MD_FILE))
{
CreateTableMdFile();
}
}
}
//检查并创建文件夹
private static void CheckCreateFolder(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
#endregion
#region Debug
private void DebugLogWithColor(string content, string hex)
{
Debug.Log($"{content}");
}
#endregion
#region Addressable部分
private void OpenAddressableWindow()
{
var type = GetType("UnityEditor.AddressableAssets.GUI", "AddressableAssetsWindow");
if (type != null)
{
InvokeReflectMethod(type, "Init", null, BindingFlags.Static | BindingFlags.NonPublic,
null);
}
}
private static Type GetTypeOfAddressableSetting()
{
return GetType("UnityEditor.AddressableAssets",
"AddressableAssetSettingsDefaultObject");
}
//获取AddressableDefaultSettings
private static object GetDefaultSettings()
{
return GetTypeOfAddressableSetting()?.GetProperty("Settings", BindingFlags.Static | BindingFlags.Public)
.GetValue(null, null);
}
//自定义地址是否有效
private static bool CustomAddressableIsValid(string groupGuid)
{
var settings = GetDefaultSettings();
if (settings != null)
{
var groups = (IList)GetPropValue(settings, "groups");
foreach (var element in groups)
{
string elementGuid = GetPropValue(element, "Guid") as string;
if (elementGuid == groupGuid)
{
return true;
}
}
}
return false;
}
//获取Addressable Group
private static object GetAddressableGroup(string guid)
{
var settings = GetDefaultSettings();
if (settings != null)
{
var groups = (IList)GetPropValue(settings, "groups");
foreach (var element in groups)
{
string elementGuid = GetPropValue(element, "Guid") as string;
if (elementGuid == guid)
{
return element;
}
}
}
return null;
}
#endregion
//获取成员属性
public static object GetPropValue(object src, string propName)
{
return src.GetType().GetProperty(propName).GetValue(src, null);
}
//获取成员属性
public static void SetPropValue(object src, string propName, object value)
{
src.GetType().GetProperty(propName).SetValue(src, value);
}
#region 反射
//获取命名空间所属的Assembly
public static Assembly GetAssemblyByNameSpace(string nameSpace)
{
var ass = AppDomain.CurrentDomain.GetAssemblies();
Assembly match = null;
foreach (var assembly in ass)
{
var types = assembly.GetTypes();
foreach (var type in types)
{
if (type.Namespace == nameSpace)
{
match = assembly;
break;
// //TODO//跳出
// Debug.Log(type.FullName);
}
}
}
return match;
}
//获取类型
public static Type GetType(string nameSpace, string typeName)
{
var assembly = GetAssemblyByNameSpace(nameSpace);
return assembly?.GetType($"{nameSpace}.{typeName}");
}
///
/// 执行反射方法
/// target:对象实例(null为类自身)
/// methodName:方法名
///
public static object InvokeReflectMethod(Type type, object target, string methodName, BindingFlags bindingAttr,
object[] args)
{
MethodInfo method = type.GetMethod(
methodName,
bindingAttr
);
return method.Invoke(
target,
args
);
}
///
/// 反射获取枚举值
///
public static dynamic GetEnumValue(string nameSpace, string enumTypeName, string valueName)
{
var type = GetType(nameSpace, enumTypeName);
return type.GetField(valueName)?.GetValue(null);
}
#endregion
private void OnFocus()
{
Init();
}
#region 导表
private static void Export()
{
//执行程序
try
{
FileInfo fileInfo = new FileInfo($"{EXCEL_2_JSON_INSTALL_FOLDER}/一键导表.bat");
using (Process proc = new Process())
{
proc.StartInfo.FileName = fileInfo.FullName;
proc.StartInfo.WorkingDirectory = EXCEL_2_JSON_INSTALL_FOLDER;
proc.Start();
proc.WaitForExit();
var codeExportFolder = $"{EXCEL_2_JSON_INSTALL_FOLDER}/export/c#";
var jsonFile = $"{EXCEL_2_JSON_INSTALL_FOLDER}/export/json/allInOne.json";
var bytesFile = $"{EXCEL_2_JSON_INSTALL_FOLDER}/export/allInOne.bytes";
if (!File.Exists(jsonFile) && !File.Exists(bytesFile))
{
throw new Exception("发生错误,导表失败");
}
//复制文件到路径
var exportFolder = $"{EXCEL_2_JSON_INSTALL_FOLDER}/export";
if (Directory.Exists(exportFolder))
{
//删除导出文件夹
if (Directory.Exists(GENERATE_TABLE_TOOL_EXPORT_PATH))
{
Directory.Delete(GENERATE_TABLE_TOOL_EXPORT_PATH, true);
}
var toCodeFolder = $"{GENERATE_TABLE_TOOL_EXPORT_PATH}/c#";
var toJsonFile = $"{GENERATE_TABLE_TOOL_EXPORT_PATH}/Resources/TableTool/allInOne.json";
var toBytesFile = $"{GENERATE_TABLE_TOOL_EXPORT_PATH}/Resources/TableTool/allInOne.bytes";
//复制代码部分
CopyToAndReplaceFolder(codeExportFolder, toCodeFolder);
var loadMode = Preference.Instance.LoadMode;
var fileType = Preference.Instance.FileType;
string tableHelperCode = string.Empty;
switch (loadMode)
{
case LoadMode.Addressable:
switch (fileType)
{
case JsonFileType.Json:
toJsonFile = $"{GENERATE_TABLE_TOOL_EXPORT_PATH}/allInOne.json";
break;
case JsonFileType.Base64:
toBytesFile = $"{GENERATE_TABLE_TOOL_EXPORT_PATH}/allInOne.bytes";
break;
}
tableHelperCode = File.ReadAllText(TABLE_HELPER_ADDRESSABLE_MODE_TEMPLATE);
break;
case LoadMode.Resource:
tableHelperCode = File.ReadAllText(TABLE_HELPER_RESOURCE_MODE_TEMPLATE);
break;
}
var dataExportPath = string.Empty;
switch (fileType)
{
case JsonFileType.Json:
CopyFileTo(jsonFile, toJsonFile);
dataExportPath = toJsonFile;
break;
case JsonFileType.Base64:
CopyFileTo(bytesFile, toBytesFile);
dataExportPath = toBytesFile;
break;
}
//导出TableTool.cs
File.WriteAllText(TABLE_TOOL_CSHARP_PATH, tableHelperCode);
AssetDatabase.Refresh();
//绑定Addressable资源
if (dataExportPath != null && loadMode == LoadMode.Addressable)
{
if (File.Exists(dataExportPath))
{
if (!CustomAddressableIsValid(Preference.Instance.AddressableGroupGuid))
{
throw new Exception($"找不到匹配 Group GUID:{Preference.Instance.AddressableGroupGuid}");
}
else
{
//如果有效
var group = GetAddressableGroup(Preference.Instance.AddressableGroupGuid);
var settings = GetDefaultSettings();
var guid = AssetDatabase.AssetPathToGUID(dataExportPath);
var entry = InvokeReflectMethod(settings.GetType(), settings, "CreateOrMoveEntry",
BindingFlags.Public | BindingFlags.Instance, new[] { guid, group, null, null });
SetPropValue(entry, "address", dataExportPath);
if (!string.IsNullOrWhiteSpace(Preference.Instance.Address))
{
//重写地址
SetPropValue(entry, "address", Preference.Instance.Address);
}
var enumValue = GetEnumValue("UnityEditor.AddressableAssets.Settings",
"AddressableAssetSettings+ModificationEvent",
"EntryMoved");
//You'll need these to run to save the changes!
var target = settings as UnityEngine.Object;
EditorUtility.SetDirty(target);
AssetDatabase.SaveAssets();
}
}
}
}
}
}
catch (Exception e)
{
throw e;
}
}
private static void CopyToAndReplaceFolder(string src, string dest)
{
if (Directory.Exists(src))
{
if (!Directory.Exists(dest))
{
Directory.CreateDirectory(dest);
}
FileUtil.ReplaceDirectory(src, dest);
}
}
private static void CopyFileTo(string src, string dest)
{
FileInfo destInfo = new FileInfo(dest);
if (!Directory.Exists(destInfo.Directory.FullName))
{
Directory.CreateDirectory(destInfo.Directory.FullName);
}
FileUtil.CopyFileOrDirectory(src, dest);
}
#endregion
}
}