From f80e166574440cab3e79aa821c572831e67aeaa3 Mon Sep 17 00:00:00 2001 From: m0_75251201 Date: Wed, 19 Nov 2025 10:17:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=A7=92=E8=89=B2=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=BE=E7=BD=AE=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CharacterPreview/Api/ModConfigApi.cs | 488 ++++++++++++++++++ CharacterPreview/Config.cs | 57 +- CharacterPreview/ModBehaviour.cs | 8 +- CharacterPreview/ShowListen.cs | 10 + .../Release/CharacterPreview.AssemblyInfo.cs | 2 +- .../CharacterPreview.AssemblyInfoInputs.cache | 2 +- ...cterPreview.csproj.AssemblyReference.cache | Bin 109968 -> 81269 bytes ...cterPreview.csproj.CoreCompileInputs.cache | 2 +- .../obj/Release/CharacterPreview.dll | Bin 29184 -> 37888 bytes .../obj/Release/HideCharacter.AssemblyInfo.cs | 2 +- .../HideCharacter.AssemblyInfoInputs.cache | 2 +- .../obj/Release/HitFeedback.AssemblyInfo.cs | 2 +- .../HitFeedback.AssemblyInfoInputs.cache | 2 +- .../obj/Release/SceneSnapshot.AssemblyInfo.cs | 2 +- .../SceneSnapshot.AssemblyInfoInputs.cache | 2 +- .../obj/Release/SceneView.AssemblyInfo.cs | 2 +- .../SceneView.AssemblyInfoInputs.cache | 2 +- Theme/obj/Release/Theme.AssemblyInfo.cs | 2 +- .../Release/Theme.AssemblyInfoInputs.cache | 2 +- UIFrame/obj/Release/UIFrame.AssemblyInfo.cs | 2 +- .../Release/UIFrame.AssemblyInfoInputs.cache | 2 +- 21 files changed, 569 insertions(+), 24 deletions(-) create mode 100644 CharacterPreview/Api/ModConfigApi.cs diff --git a/CharacterPreview/Api/ModConfigApi.cs b/CharacterPreview/Api/ModConfigApi.cs new file mode 100644 index 0000000..1d00ea9 --- /dev/null +++ b/CharacterPreview/Api/ModConfigApi.cs @@ -0,0 +1,488 @@ +using System; +using System.Linq; +using System.Reflection; +using UnityEngine; + +//替换为你的mod命名空间, 防止多个同名ModConfigAPI冲突 +namespace CharacterPreview.Api { +/// +/// ModConfig 安全接口封装类 - 提供不抛异常的静态接口 +/// ModConfig Safe API Wrapper Class - Provides non-throwing static interfaces +/// +public static class ModConfigAPI +{ + public static string ModConfigName = "ModConfig"; + + //Ensure this match the number of ModConfig.ModBehaviour.VERSION + //这里确保版本号与ModConfig.ModBehaviour.VERSION匹配 + private const int ModConfigVersion = 1; + + private static string TAG = $"ModConfig_v{ModConfigVersion}"; + + private static Type modBehaviourType; + private static Type optionsManagerType; + public static bool isInitialized = false; + private static bool versionChecked = false; + private static bool isVersionCompatible = false; + + /// + /// 检查版本兼容性 + /// Check version compatibility + /// + private static bool CheckVersionCompatibility() + { + if (versionChecked) + return isVersionCompatible; + + try + { + // 尝试获取 ModConfig 的版本号 + // Try to get ModConfig version number + var versionField = modBehaviourType.GetField("VERSION", BindingFlags.Public | BindingFlags.Static); + if (versionField != null && versionField.FieldType == typeof(int)) + { + var modConfigVersion = (int)versionField.GetValue(null); + isVersionCompatible = (modConfigVersion == ModConfigVersion); + + if (!isVersionCompatible) + { + Debug.LogError($"[{TAG}] 版本不匹配!API版本: {ModConfigVersion}, ModConfig版本: {modConfigVersion}"); + return false; + } + + Debug.Log($"[{TAG}] 版本检查通过: {ModConfigVersion}"); + versionChecked = true; + return true; + } + else + { + // 如果找不到版本字段,发出警告但继续运行(向后兼容) + // If version field not found, warn but continue (backward compatibility) + Debug.LogWarning($"[{TAG}] 未找到版本信息字段,跳过版本检查"); + isVersionCompatible = true; + versionChecked = true; + return true; + } + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 版本检查失败: {ex.Message}"); + isVersionCompatible = false; + versionChecked = true; + return false; + } + } + + /// + /// 初始化 ModConfigAPI,检查必要的函数是否存在 + /// Initialize ModConfigAPI, check if necessary functions exist + /// + public static bool Initialize() + { + try + { + if (isInitialized) + return true; + + // 获取 ModBehaviour 类型 + // Get ModBehaviour type + modBehaviourType = FindTypeInAssemblies("ModConfig.ModBehaviour"); + if (modBehaviourType == null) + { + Debug.LogWarning($"[{TAG}] ModConfig.ModBehaviour 类型未找到,ModConfig 可能未加载"); + return false; + } + + // 获取 OptionsManager_Mod 类型 + // Get OptionsManager_Mod type + optionsManagerType = FindTypeInAssemblies("ModConfig.OptionsManager_Mod"); + if (optionsManagerType == null) + { + Debug.LogWarning($"[{TAG}] ModConfig.OptionsManager_Mod 类型未找到"); + return false; + } + + // 检查版本兼容性 + // Check version compatibility + if (!CheckVersionCompatibility()) + { + Debug.LogWarning($"[{TAG}] ModConfig version mismatch!!!"); + return false; + } + + // 检查必要的静态方法是否存在 + // Check if necessary static methods exist + string[] requiredMethods = { + "AddDropdownList", + "AddInputWithSlider", + "AddBoolDropdownList", + "AddOnOptionsChangedDelegate", + "RemoveOnOptionsChangedDelegate", + }; + + foreach (var methodName in requiredMethods) + { + var method = modBehaviourType.GetMethod(methodName, BindingFlags.Public | BindingFlags.Static); + if (method == null) + { + Debug.LogError($"[{TAG}] 必要方法 {methodName} 未找到"); + return false; + } + } + + isInitialized = true; + Debug.Log($"[{TAG}] ModConfigAPI 初始化成功"); + return true; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 初始化失败: {ex.Message}"); + return false; + } + } + + /// + /// 在所有已加载的程序集中查找类型 + /// + private static Type FindTypeInAssemblies(string typeName) + { + try + { + // 获取当前域中的所有程序集 + Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); + + foreach (var assembly in assemblies) + { + try + { + // 检查程序集名称是否包含 ModConfig + if (assembly.FullName.Contains("ModConfig")) + { + Debug.Log($"[{TAG}] 找到 ModConfig 相关程序集: {assembly.FullName}"); + } + + // 尝试在该程序集中查找类型 + var type = assembly.GetType(typeName); + if (type != null) + { + Debug.Log($"[{TAG}] 在程序集 {assembly.FullName} 中找到类型 {typeName}"); + return type; + } + } + catch (Exception ex) + { + // 忽略单个程序集的查找错误 + continue; + } + } + + // 记录所有已加载的程序集用于调试 + Debug.LogWarning($"[{TAG}] 在所有程序集中未找到类型 {typeName},已加载程序集数量: {assemblies.Length}"); + foreach (var assembly in assemblies.Where(a => a.FullName.Contains("ModConfig"))) + { + Debug.Log($"[{TAG}] ModConfig 相关程序集: {assembly.FullName}"); + } + + return null; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 程序集扫描失败: {ex.Message}"); + return null; + } + } + + /// + /// 安全地添加选项变更事件委托 + /// Safely add options changed event delegate + /// + /// 事件处理委托,参数为变更的选项键名 + /// 是否成功添加 + public static bool SafeAddOnOptionsChangedDelegate(Action action) + { + if (!Initialize()) + return false; + + if (action == null) + { + Debug.LogWarning($"[{TAG}] 不能添加空的事件委托"); + return false; + } + + try + { + var method = modBehaviourType.GetMethod("AddOnOptionsChangedDelegate", BindingFlags.Public | BindingFlags.Static); + method.Invoke(null, new object[] { action }); + + Debug.Log($"[{TAG}] 成功添加选项变更事件委托"); + return true; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 添加选项变更事件委托失败: {ex.Message}"); + return false; + } + } + + /// + /// 安全地移除选项变更事件委托 + /// Safely remove options changed event delegate + /// + /// 要移除的事件处理委托 + /// 是否成功移除 + public static bool SafeRemoveOnOptionsChangedDelegate(Action action) + { + if (!Initialize()) + return false; + + if (action == null) + { + Debug.LogWarning($"[{TAG}] 不能移除空的事件委托"); + return false; + } + + try + { + var method = modBehaviourType.GetMethod("RemoveOnOptionsChangedDelegate", BindingFlags.Public | BindingFlags.Static); + method.Invoke(null, new object[] { action }); + + Debug.Log($"[{TAG}] 成功移除选项变更事件委托"); + return true; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 移除选项变更事件委托失败: {ex.Message}"); + return false; + } + } + + /// + /// 安全地添加下拉列表配置项 + /// Safely add dropdown list configuration item + /// + public static bool SafeAddDropdownList(string modName, string key, string description, System.Collections.Generic.SortedDictionary options, Type valueType, object defaultValue) + { + key = $"{modName}_{key}"; + + if (!Initialize()) + return false; + + try + { + var method = modBehaviourType.GetMethod("AddDropdownList", BindingFlags.Public | BindingFlags.Static); + method.Invoke(null, new object[] { modName, key, description, options, valueType, defaultValue }); + + Debug.Log($"[{TAG}] 成功添加下拉列表: {modName}.{key}"); + return true; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 添加下拉列表失败 {modName}.{key}: {ex.Message}"); + return false; + } + } + + /// + /// 安全地添加带滑条的输入框配置项 + /// Safely add input box with slider configuration item + /// + public static bool SafeAddInputWithSlider(string modName, string key, string description, Type valueType, object defaultValue, UnityEngine.Vector2? sliderRange = null) + { + key = $"{modName}_{key}"; + + if (!Initialize()) + return false; + + try + { + var method = modBehaviourType.GetMethod("AddInputWithSlider", BindingFlags.Public | BindingFlags.Static); + + // 处理可空参数 + // Handle nullable parameters + var parameters = sliderRange.HasValue ? + new object[] { modName, key, description, valueType, defaultValue, sliderRange.Value } : + new object[] { modName, key, description, valueType, defaultValue, null }; + + method.Invoke(null, parameters); + + Debug.Log($"[{TAG}] 成功添加滑条输入框: {modName}.{key}"); + return true; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 添加滑条输入框失败 {modName}.{key}: {ex.Message}"); + return false; + } + } + + /// + /// 安全地添加布尔下拉列表配置项 + /// Safely add boolean dropdown list configuration item + /// + public static bool SafeAddBoolDropdownList(string modName, string key, string description, bool defaultValue) + { + key = $"{modName}_{key}"; + + if (!Initialize()) + return false; + + try + { + var method = modBehaviourType.GetMethod("AddBoolDropdownList", BindingFlags.Public | BindingFlags.Static); + method.Invoke(null, new object[] { modName, key, description, defaultValue }); + + Debug.Log($"[{TAG}] 成功添加布尔下拉列表: {modName}.{key}"); + return true; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 添加布尔下拉列表失败 {modName}.{key}: {ex.Message}"); + return false; + } + } + + /// + /// 安全地加载配置值 + /// Safely load configuration value + /// + /// 值的类型 + /// 配置键 + /// 默认值 + /// 加载的值或默认值 + public static T SafeLoad(string mod_name, string key, T defaultValue = default(T)) + { + key = $"{mod_name}_{key}"; + + if (!Initialize()) + return defaultValue; + + if (string.IsNullOrEmpty(key)) + { + Debug.LogWarning($"[{TAG}] 配置键不能为空"); + return defaultValue; + } + + try + { + var loadMethod = optionsManagerType.GetMethod("Load", BindingFlags.Public | BindingFlags.Static); + if (loadMethod == null) + { + Debug.LogError($"[{TAG}] 未找到 OptionsManager_Mod.Load 方法"); + return defaultValue; + } + + // 获取泛型方法 + var genericLoadMethod = loadMethod.MakeGenericMethod(typeof(T)); + var result = genericLoadMethod.Invoke(null, new object[] { key, defaultValue }); + + Debug.Log($"[{TAG}] 成功加载配置: {key} = {result}"); + return (T)result; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 加载配置失败 {key}: {ex.Message}"); + return defaultValue; + } + } + + /// + /// 安全地保存配置值 + /// Safely save configuration value + /// + /// 值的类型 + /// 配置键 + /// 要保存的值 + /// 是否保存成功 + public static bool SafeSave(string mod_name, string key, T value) + { + key = $"{mod_name}_{key}"; + + if (!Initialize()) + return false; + + if (string.IsNullOrEmpty(key)) + { + Debug.LogWarning($"[{TAG}] 配置键不能为空"); + return false; + } + + try + { + var saveMethod = optionsManagerType.GetMethod("Save", BindingFlags.Public | BindingFlags.Static); + if (saveMethod == null) + { + Debug.LogError($"[{TAG}] 未找到 OptionsManager_Mod.Save 方法"); + return false; + } + + // 获取泛型方法 + var genericSaveMethod = saveMethod.MakeGenericMethod(typeof(T)); + genericSaveMethod.Invoke(null, new object[] { key, value }); + + Debug.Log($"[{TAG}] 成功保存配置: {key} = {value}"); + return true; + } + catch (Exception ex) + { + Debug.LogError($"[{TAG}] 保存配置失败 {key}: {ex.Message}"); + return false; + } + } + + /// + /// 检查 ModConfig 是否可用 + /// Check if ModConfig is available + /// + public static bool IsAvailable() + { + return Initialize(); + } + + /// + /// 获取 ModConfig 版本信息(如果存在) + /// Get ModConfig version information (if exists) + /// + public static string GetVersionInfo() + { + if (!Initialize()) + return "ModConfig 未加载 | ModConfig not loaded"; + + try + { + // 尝试获取版本信息(如果 ModBehaviour 有相关字段或属性) + // Try to get version information (if ModBehaviour has related fields or properties) + var versionField = modBehaviourType.GetField("VERSION", BindingFlags.Public | BindingFlags.Static); + if (versionField != null && versionField.FieldType == typeof(int)) + { + var modConfigVersion = (int)versionField.GetValue(null); + var compatibility = (modConfigVersion == ModConfigVersion) ? "兼容" : "不兼容"; + return $"ModConfig v{modConfigVersion} (API v{ModConfigVersion}, {compatibility})"; + } + + var versionProperty = modBehaviourType.GetProperty("VERSION", BindingFlags.Public | BindingFlags.Static); + if (versionProperty != null) + { + var versionValue = versionProperty.GetValue(null); + return versionValue?.ToString() ?? "未知版本 | Unknown version"; + } + + return "ModConfig 已加载(版本信息不可用) | ModConfig loaded (version info unavailable)"; + } + catch + { + return "ModConfig 已加载(版本检查失败) | ModConfig loaded (version check failed)"; + } + } + + /// + /// 检查版本兼容性 + /// Check version compatibility + /// + public static bool IsVersionCompatible() + { + if (!Initialize()) + return false; + return isVersionCompatible; + } +} +} \ No newline at end of file diff --git a/CharacterPreview/Config.cs b/CharacterPreview/Config.cs index 07098eb..c4b132c 100644 --- a/CharacterPreview/Config.cs +++ b/CharacterPreview/Config.cs @@ -22,10 +22,12 @@ namespace CharacterPreview [Serializable] public class Config { + private const string MOD_ID = "CharacterPreview"; + private string configSavePath; - + public ConfigData data = new ConfigData(); - + public Config(string savePath) { configSavePath = savePath; @@ -58,7 +60,58 @@ namespace CharacterPreview var config = new Config(savePath); config.data = loadedData ?? new ConfigData(); + config.GenerateSetting(); return config; } + + public void GenerateSetting() + { + if (!Api.ModConfigAPI.Initialize()) + return; + Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "use", "使用配置中保存的位置数据", data.use); + Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "tip", "开启操作提示", data.tip); + Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID,"hideCamera","隐藏摄像机模型", data.hideCamera); + Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "showSetEditButton", "显示启用编辑按钮", data.showSetEditButton); + Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "canEdit", "是否启用编辑", data.canEdit); + Api.ModConfigAPI.SafeAddBoolDropdownList(MOD_ID, "showEquipment", "显示装备", data.showEquipment); + Api.ModConfigAPI.SafeAddInputWithSlider(MOD_ID, "editSpeed", "编辑灵敏度", typeof(float), 1, + new Vector2(0.1f, 10)); + + + Api.ModConfigAPI.SafeAddOnOptionsChangedDelegate(OnSettingChange); + } + + public void OnSettingChange(string key) + { + var content = key.Split('_'); + if(content.Length<2||content[0]!=MOD_ID) + return; + key = content[1]; + Debug.Log($"OnSettingChange_{key}"); + switch (key) + { + case "use": + data.use = Api.ModConfigAPI.SafeLoad(MOD_ID, "use", false); + break; + case "tip": + data.tip = Api.ModConfigAPI.SafeLoad(MOD_ID, "tip", true); + break; + case "hideCamera": + data.hideCamera = Api.ModConfigAPI.SafeLoad(MOD_ID, "hideCamera", true); + break; + case "showSetEditButton": + data.showSetEditButton = Api.ModConfigAPI.SafeLoad(MOD_ID, "showSetEditButton", true); + break; + case "canEdit": + data.canEdit = Api.ModConfigAPI.SafeLoad(MOD_ID, "canEdit", true); + break; + case "showEquipment": + data.showEquipment = Api.ModConfigAPI.SafeLoad(MOD_ID, "showEquipment", true); + break; + case "editSpeed": + data.editSpeed = Api.ModConfigAPI.SafeLoad(MOD_ID, "editSpeed", 1f); + break; + } + } } } \ No newline at end of file diff --git a/CharacterPreview/ModBehaviour.cs b/CharacterPreview/ModBehaviour.cs index f2147c7..d8951ac 100644 --- a/CharacterPreview/ModBehaviour.cs +++ b/CharacterPreview/ModBehaviour.cs @@ -176,13 +176,7 @@ namespace CharacterPreview // SetModelShow(false); } - private static void SetModelShow(bool show) - { - if (characterControl) - { - characterControl.gameObject.SetActive(show); - } - } + private static void HideCamera() diff --git a/CharacterPreview/ShowListen.cs b/CharacterPreview/ShowListen.cs index 93832cb..7bae071 100644 --- a/CharacterPreview/ShowListen.cs +++ b/CharacterPreview/ShowListen.cs @@ -6,7 +6,17 @@ namespace CharacterPreview { public class ShowListen:MonoBehaviour { + private void Awake() + { + + } + private void OnEnable() + { + CreateModel(); + } + + private void CreateModel() { try { diff --git a/CharacterPreview/obj/Release/CharacterPreview.AssemblyInfo.cs b/CharacterPreview/obj/Release/CharacterPreview.AssemblyInfo.cs index 307b5e3..7faf897 100644 --- a/CharacterPreview/obj/Release/CharacterPreview.AssemblyInfo.cs +++ b/CharacterPreview/obj/Release/CharacterPreview.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+6cb89ba4398ec37a8aa131d176c6f4b85ddbf3b0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bef0d4379272d5efa12a376799b16fdaaed6b62f")] [assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")] [assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/CharacterPreview/obj/Release/CharacterPreview.AssemblyInfoInputs.cache b/CharacterPreview/obj/Release/CharacterPreview.AssemblyInfoInputs.cache index 4d303ea..5edbd67 100644 --- a/CharacterPreview/obj/Release/CharacterPreview.AssemblyInfoInputs.cache +++ b/CharacterPreview/obj/Release/CharacterPreview.AssemblyInfoInputs.cache @@ -1 +1 @@ -cbee91e822d9ef04e2d67aa8b9bb2a276fe0b999202eacd0c7845f2ebd98f435 +a42f5308ba7e48ab4e94e1da1f5b2ea1c754320ab8ae20476f1311f0955685b5 diff --git a/CharacterPreview/obj/Release/CharacterPreview.csproj.AssemblyReference.cache b/CharacterPreview/obj/Release/CharacterPreview.csproj.AssemblyReference.cache index fe5ac04c6d9288a75d8f924993cebc9c73fbe764..8e96548ee37e3de6e1feb9a725b9bb8345fa62d9 100644 GIT binary patch delta 23 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 F<$p#9=0N}e diff --git a/CharacterPreview/obj/Release/CharacterPreview.csproj.CoreCompileInputs.cache b/CharacterPreview/obj/Release/CharacterPreview.csproj.CoreCompileInputs.cache index 87a82b2..a7a5db4 100644 --- a/CharacterPreview/obj/Release/CharacterPreview.csproj.CoreCompileInputs.cache +++ b/CharacterPreview/obj/Release/CharacterPreview.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -c0134ee1afbfeb7d9ea2fc05c8c4e57fa94629a377c1dde9e9b9bbb913bac608 +debe5be4a23d52ab9f28d95bc69bf4543c45285e88e03fb2a50aeaa25990c758 diff --git a/CharacterPreview/obj/Release/CharacterPreview.dll b/CharacterPreview/obj/Release/CharacterPreview.dll index f586aaca63997074da4624389e398fcd709a037d..92d4a47788186b7ad5c1d51de10ca4db7c5740d8 100644 GIT binary patch literal 37888 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 Z^tnU+9~|e2cRK%*X#RgP|IbL^e*=lh408Yg delta 12678 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 C*+&`x diff --git a/HideCharacter/obj/Release/HideCharacter.AssemblyInfo.cs b/HideCharacter/obj/Release/HideCharacter.AssemblyInfo.cs index af5d69b..aadeac8 100644 --- a/HideCharacter/obj/Release/HideCharacter.AssemblyInfo.cs +++ b/HideCharacter/obj/Release/HideCharacter.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+bef0d4379272d5efa12a376799b16fdaaed6b62f")] [assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")] [assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")] diff --git a/HideCharacter/obj/Release/HideCharacter.AssemblyInfoInputs.cache b/HideCharacter/obj/Release/HideCharacter.AssemblyInfoInputs.cache index 93eba82..2f68706 100644 --- a/HideCharacter/obj/Release/HideCharacter.AssemblyInfoInputs.cache +++ b/HideCharacter/obj/Release/HideCharacter.AssemblyInfoInputs.cache @@ -1 +1 @@ -5947386f6162b5b02c7300baa77b21c77fa4ed061a138d3fc81f970ad239b319 +d76c4ba68444a407e65caba3b97339bd2f8684bd333f390c29c7da3203c22bc2 diff --git a/HitFeedback/obj/Release/HitFeedback.AssemblyInfo.cs b/HitFeedback/obj/Release/HitFeedback.AssemblyInfo.cs index bc755ee..aaee443 100644 --- a/HitFeedback/obj/Release/HitFeedback.AssemblyInfo.cs +++ b/HitFeedback/obj/Release/HitFeedback.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bef0d4379272d5efa12a376799b16fdaaed6b62f")] [assembly: System.Reflection.AssemblyProductAttribute("HitFeedback")] [assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/HitFeedback/obj/Release/HitFeedback.AssemblyInfoInputs.cache b/HitFeedback/obj/Release/HitFeedback.AssemblyInfoInputs.cache index 7e2ffd7..f9f7bc0 100644 --- a/HitFeedback/obj/Release/HitFeedback.AssemblyInfoInputs.cache +++ b/HitFeedback/obj/Release/HitFeedback.AssemblyInfoInputs.cache @@ -1 +1 @@ -91dac8144f7f4643815b8939a0d98f00568590da27297be94ea52497a9430f21 +acb938162d1c64e1817aecf8e6baac4e930f90bfd0fa558410cac6f0a7c21a51 diff --git a/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfo.cs b/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfo.cs index 79043e7..325b2aa 100644 --- a/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfo.cs +++ b/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bef0d4379272d5efa12a376799b16fdaaed6b62f")] [assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")] [assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")] diff --git a/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfoInputs.cache b/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfoInputs.cache index 0b6c0c3..fbc1b54 100644 --- a/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfoInputs.cache +++ b/SceneSnapshot/obj/Release/SceneSnapshot.AssemblyInfoInputs.cache @@ -1 +1 @@ -9bf7075992c2ab1ad22b59ed877ab0388f5a130c6bb74696247e17e3ba773369 +bbee6248b3f74773c40d99f439b4fc037fbbeba7941c4deb9a846c191a483987 diff --git a/SceneView/obj/Release/SceneView.AssemblyInfo.cs b/SceneView/obj/Release/SceneView.AssemblyInfo.cs index 0497d3d..ce4d943 100644 --- a/SceneView/obj/Release/SceneView.AssemblyInfo.cs +++ b/SceneView/obj/Release/SceneView.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bef0d4379272d5efa12a376799b16fdaaed6b62f")] [assembly: System.Reflection.AssemblyProductAttribute("SceneView")] [assembly: System.Reflection.AssemblyTitleAttribute("SceneView")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/SceneView/obj/Release/SceneView.AssemblyInfoInputs.cache b/SceneView/obj/Release/SceneView.AssemblyInfoInputs.cache index 5289bce..f8242a0 100644 --- a/SceneView/obj/Release/SceneView.AssemblyInfoInputs.cache +++ b/SceneView/obj/Release/SceneView.AssemblyInfoInputs.cache @@ -1 +1 @@ -ec6dec26bcfd53d3c84a0a001bc8365bda3279f794af569d235a57241c814223 +0067b0822f508515ae4d849787f007d073fa7495afc4f8389f6796fcaccab4f5 diff --git a/Theme/obj/Release/Theme.AssemblyInfo.cs b/Theme/obj/Release/Theme.AssemblyInfo.cs index 3400721..b1e3f2b 100644 --- a/Theme/obj/Release/Theme.AssemblyInfo.cs +++ b/Theme/obj/Release/Theme.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Theme")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bef0d4379272d5efa12a376799b16fdaaed6b62f")] [assembly: System.Reflection.AssemblyProductAttribute("Theme")] [assembly: System.Reflection.AssemblyTitleAttribute("Theme")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Theme/obj/Release/Theme.AssemblyInfoInputs.cache b/Theme/obj/Release/Theme.AssemblyInfoInputs.cache index a63bae7..1e286b7 100644 --- a/Theme/obj/Release/Theme.AssemblyInfoInputs.cache +++ b/Theme/obj/Release/Theme.AssemblyInfoInputs.cache @@ -1 +1 @@ -d47d995ae9d6a870d3b9433f945c9b6cd782a4c69f3dea86ba112fc6f23eaffd +a8d1921bdeafad5ec2a906c7966636001ac666755a7301126d4a45e3c9f7d5f4 diff --git a/UIFrame/obj/Release/UIFrame.AssemblyInfo.cs b/UIFrame/obj/Release/UIFrame.AssemblyInfo.cs index badcce1..1c9753a 100644 --- a/UIFrame/obj/Release/UIFrame.AssemblyInfo.cs +++ b/UIFrame/obj/Release/UIFrame.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bef0d4379272d5efa12a376799b16fdaaed6b62f")] [assembly: System.Reflection.AssemblyProductAttribute("UIFrame")] [assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/UIFrame/obj/Release/UIFrame.AssemblyInfoInputs.cache b/UIFrame/obj/Release/UIFrame.AssemblyInfoInputs.cache index c51bc29..6800134 100644 --- a/UIFrame/obj/Release/UIFrame.AssemblyInfoInputs.cache +++ b/UIFrame/obj/Release/UIFrame.AssemblyInfoInputs.cache @@ -1 +1 @@ -5cacd6c5da721af1fa92623c1281494f48f6512910f19617f14a84da7edfc68a +49e2c52c8d65b0149b702deabe688d5227cfec39da0371b9c72dda7fccb84064