Compare commits
3 Commits
6cb89ba439
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48f391cd2a | ||
|
|
f80e166574 | ||
|
|
bef0d43792 |
488
CharacterPreview/Api/ModConfigApi.cs
Normal file
488
CharacterPreview/Api/ModConfigApi.cs
Normal file
@@ -0,0 +1,488 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
//替换为你的mod命名空间, 防止多个同名ModConfigAPI冲突
|
||||||
|
namespace CharacterPreview.Api {
|
||||||
|
/// <summary>
|
||||||
|
/// ModConfig 安全接口封装类 - 提供不抛异常的静态接口
|
||||||
|
/// ModConfig Safe API Wrapper Class - Provides non-throwing static interfaces
|
||||||
|
/// </summary>
|
||||||
|
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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查版本兼容性
|
||||||
|
/// Check version compatibility
|
||||||
|
/// </summary>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 初始化 ModConfigAPI,检查必要的函数是否存在
|
||||||
|
/// Initialize ModConfigAPI, check if necessary functions exist
|
||||||
|
/// </summary>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 在所有已加载的程序集中查找类型
|
||||||
|
/// </summary>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全地添加选项变更事件委托
|
||||||
|
/// Safely add options changed event delegate
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action">事件处理委托,参数为变更的选项键名</param>
|
||||||
|
/// <returns>是否成功添加</returns>
|
||||||
|
public static bool SafeAddOnOptionsChangedDelegate(Action<string> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全地移除选项变更事件委托
|
||||||
|
/// Safely remove options changed event delegate
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="action">要移除的事件处理委托</param>
|
||||||
|
/// <returns>是否成功移除</returns>
|
||||||
|
public static bool SafeRemoveOnOptionsChangedDelegate(Action<string> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全地添加下拉列表配置项
|
||||||
|
/// Safely add dropdown list configuration item
|
||||||
|
/// </summary>
|
||||||
|
public static bool SafeAddDropdownList(string modName, string key, string description, System.Collections.Generic.SortedDictionary<string, object> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全地添加带滑条的输入框配置项
|
||||||
|
/// Safely add input box with slider configuration item
|
||||||
|
/// </summary>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全地添加布尔下拉列表配置项
|
||||||
|
/// Safely add boolean dropdown list configuration item
|
||||||
|
/// </summary>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全地加载配置值
|
||||||
|
/// Safely load configuration value
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">值的类型</typeparam>
|
||||||
|
/// <param name="key">配置键</param>
|
||||||
|
/// <param name="defaultValue">默认值</param>
|
||||||
|
/// <returns>加载的值或默认值</returns>
|
||||||
|
public static T SafeLoad<T>(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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 安全地保存配置值
|
||||||
|
/// Safely save configuration value
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">值的类型</typeparam>
|
||||||
|
/// <param name="key">配置键</param>
|
||||||
|
/// <param name="value">要保存的值</param>
|
||||||
|
/// <returns>是否保存成功</returns>
|
||||||
|
public static bool SafeSave<T>(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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查 ModConfig 是否可用
|
||||||
|
/// Check if ModConfig is available
|
||||||
|
/// </summary>
|
||||||
|
public static bool IsAvailable()
|
||||||
|
{
|
||||||
|
return Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取 ModConfig 版本信息(如果存在)
|
||||||
|
/// Get ModConfig version information (if exists)
|
||||||
|
/// </summary>
|
||||||
|
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)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检查版本兼容性
|
||||||
|
/// Check version compatibility
|
||||||
|
/// </summary>
|
||||||
|
public static bool IsVersionCompatible()
|
||||||
|
{
|
||||||
|
if (!Initialize())
|
||||||
|
return false;
|
||||||
|
return isVersionCompatible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,6 +22,8 @@ namespace CharacterPreview
|
|||||||
[Serializable]
|
[Serializable]
|
||||||
public class Config
|
public class Config
|
||||||
{
|
{
|
||||||
|
private const string MOD_ID = "CharacterPreview";
|
||||||
|
|
||||||
private string configSavePath;
|
private string configSavePath;
|
||||||
|
|
||||||
public ConfigData data = new ConfigData();
|
public ConfigData data = new ConfigData();
|
||||||
@@ -58,7 +60,58 @@ namespace CharacterPreview
|
|||||||
|
|
||||||
var config = new Config(savePath);
|
var config = new Config(savePath);
|
||||||
config.data = loadedData ?? new ConfigData();
|
config.data = loadedData ?? new ConfigData();
|
||||||
|
config.GenerateSetting();
|
||||||
return config;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -24,6 +24,11 @@ namespace CharacterPreview
|
|||||||
private bool canEdit = false;
|
private bool canEdit = false;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
{
|
{
|
||||||
SetRectTransform();
|
SetRectTransform();
|
||||||
SetText();
|
SetText();
|
||||||
@@ -130,19 +135,23 @@ namespace CharacterPreview
|
|||||||
rectTransform = gameObject.AddComponent<RectTransform>();
|
rectTransform = gameObject.AddComponent<RectTransform>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!rectTransform.parent || rectTransform.parent.name != "Canvas")
|
if (!rectTransform.parent)
|
||||||
{
|
{
|
||||||
var defaultCanvas = GameObject.Find("Canvas");
|
var defaultCanvas = new GameObject("ControlModelMoveCanvas");
|
||||||
if (!defaultCanvas)
|
defaultCanvas.layer = LayerMask.NameToLayer("UI");
|
||||||
{
|
|
||||||
defaultCanvas = new GameObject("ControlModelMoveCanvas");
|
|
||||||
var canvas = defaultCanvas.AddComponent<Canvas>();
|
var canvas = defaultCanvas.AddComponent<Canvas>();
|
||||||
canvas.renderMode = RenderMode.ScreenSpaceOverlay; // 设置渲染模式为屏幕空间覆盖
|
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
|
||||||
defaultCanvas.AddComponent<CanvasScaler>();
|
canvas.sortingOrder = -100;
|
||||||
defaultCanvas.AddComponent<GraphicRaycaster>();
|
var canvasScaler = defaultCanvas.AddComponent<CanvasScaler>();
|
||||||
canvasRectTransform = defaultCanvas.transform;
|
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
|
||||||
}
|
canvasScaler.referenceResolution = new Vector2(1600, 900);
|
||||||
|
canvasScaler.matchWidthOrHeight = 1f;
|
||||||
|
|
||||||
|
defaultCanvas.AddComponent<GraphicRaycaster>();
|
||||||
|
|
||||||
|
canvasRectTransform = defaultCanvas.GetComponent<RectTransform>();
|
||||||
|
canvasRectTransform.SetParent(null, false);
|
||||||
|
canvasRectTransform.SetAsFirstSibling();
|
||||||
rectTransform.SetParent(defaultCanvas.transform);
|
rectTransform.SetParent(defaultCanvas.transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +174,7 @@ namespace CharacterPreview
|
|||||||
buttonRect.anchorMin=Vector2.right;
|
buttonRect.anchorMin=Vector2.right;
|
||||||
buttonRect.pivot = Vector2.right;
|
buttonRect.pivot = Vector2.right;
|
||||||
buttonRect.sizeDelta=new Vector2(80f,30f);
|
buttonRect.sizeDelta=new Vector2(80f,30f);
|
||||||
buttonRect.anchoredPosition = new Vector2(-200, 100);
|
buttonRect.anchoredPosition = new Vector2(-80, 5);
|
||||||
|
|
||||||
|
|
||||||
var button = buttonObj.AddComponent<Button>();
|
var button = buttonObj.AddComponent<Button>();
|
||||||
|
|||||||
@@ -1,175 +1,175 @@
|
|||||||
using System;
|
// using System;
|
||||||
using System.Linq;
|
// using System.Linq;
|
||||||
using System.Reflection;
|
// using System.Reflection;
|
||||||
using UnityEngine;
|
// using UnityEngine;
|
||||||
|
//
|
||||||
namespace CharacterPreview
|
// namespace CharacterPreview
|
||||||
{
|
// {
|
||||||
public static class Load_DuckovCustomModel
|
// public static class Load_DuckovCustomModel
|
||||||
{
|
// {
|
||||||
public static ModelMove? CreateModel()
|
// public static ModelMove? CreateModel()
|
||||||
{
|
// {
|
||||||
Action startMethod = null;
|
// Action startMethod = null;
|
||||||
Action midMethod = null;
|
// Action midMethod = null;
|
||||||
Action endMethod = null;
|
// Action endMethod = null;
|
||||||
// 尝试获取 LevelManager_OnLevelBeginInitializing
|
// // 尝试获取 LevelManager_OnLevelBeginInitializing
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnLevelBeginInitializing...");
|
// Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnLevelBeginInitializing...");
|
||||||
startMethod =
|
// startMethod =
|
||||||
GetPrivateStaticVoidMethod(
|
// GetPrivateStaticVoidMethod(
|
||||||
"DuckovCustomModel.ModEntry.LevelManager_OnLevelBeginInitializing");
|
// "DuckovCustomModel.ModEntry.LevelManager_OnLevelBeginInitializing");
|
||||||
Debug.Log("[Main Runner] 成功获取 LevelManager_OnLevelBeginInitializing 委托。");
|
// Debug.Log("[Main Runner] 成功获取 LevelManager_OnLevelBeginInitializing 委托。");
|
||||||
}
|
// }
|
||||||
catch (Exception ex)
|
// catch (Exception ex)
|
||||||
{
|
// {
|
||||||
Debug.LogError(
|
// Debug.LogError(
|
||||||
$"[Main Runner] <color=red>获取 LevelManager_OnLevelBeginInitializing 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
// $"[Main Runner] <color=red>获取 LevelManager_OnLevelBeginInitializing 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 尝试获取 LevelManager_OnLevelInitialized
|
// // 尝试获取 LevelManager_OnLevelInitialized
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnLevelInitialized...");
|
// Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnLevelInitialized...");
|
||||||
midMethod = GetPrivateStaticVoidMethod(
|
// midMethod = GetPrivateStaticVoidMethod(
|
||||||
"DuckovCustomModel.ModEntry.LevelManager_OnLevelInitialized");
|
// "DuckovCustomModel.ModEntry.LevelManager_OnLevelInitialized");
|
||||||
Debug.Log("[Main Runner] 成功获取 LevelManager_OnLevelInitialized 委托。");
|
// Debug.Log("[Main Runner] 成功获取 LevelManager_OnLevelInitialized 委托。");
|
||||||
}
|
// }
|
||||||
catch (Exception ex)
|
// catch (Exception ex)
|
||||||
{
|
// {
|
||||||
Debug.LogError(
|
// Debug.LogError(
|
||||||
$"[Main Runner] <color=red>获取 LevelManager_OnLevelInitialized 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
// $"[Main Runner] <color=red>获取 LevelManager_OnLevelInitialized 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 尝试获取 LevelManager_OnAfterLevelInitialized
|
// // 尝试获取 LevelManager_OnAfterLevelInitialized
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnAfterLevelInitialized...");
|
// Debug.Log("\n[Main Runner] 尝试获取 LevelManager_OnAfterLevelInitialized...");
|
||||||
endMethod = GetPrivateStaticVoidMethod(
|
// endMethod = GetPrivateStaticVoidMethod(
|
||||||
"DuckovCustomModel.ModEntry.LevelManager_OnAfterLevelInitialized");
|
// "DuckovCustomModel.ModEntry.LevelManager_OnAfterLevelInitialized");
|
||||||
Debug.Log("[Main Runner] 成功获取 LevelManager_OnAfterLevelInitialized 委托。");
|
// Debug.Log("[Main Runner] 成功获取 LevelManager_OnAfterLevelInitialized 委托。");
|
||||||
}
|
// }
|
||||||
catch (Exception ex)
|
// catch (Exception ex)
|
||||||
{
|
// {
|
||||||
Debug.LogError(
|
// Debug.LogError(
|
||||||
$"[Main Runner] <color=red>获取 LevelManager_OnAfterLevelInitialized 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
// $"[Main Runner] <color=red>获取 LevelManager_OnAfterLevelInitialized 时发生错误:</color> {ex.GetType().Name} - {ex.Message}");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
Debug.Log("\n[Main Runner] --- 调用获取到的方法 ---");
|
// Debug.Log("\n[Main Runner] --- 调用获取到的方法 ---");
|
||||||
if (startMethod != null)
|
// if (startMethod != null)
|
||||||
{
|
// {
|
||||||
Debug.Log("[Main Runner] 正在调用 LevelManager_OnLevelBeginInitializing...");
|
// Debug.Log("[Main Runner] 正在调用 LevelManager_OnLevelBeginInitializing...");
|
||||||
startMethod.Invoke();
|
// startMethod.Invoke();
|
||||||
Debug.Log("[Main Runner] LevelManager_OnLevelBeginInitializing 调用完成。");
|
// Debug.Log("[Main Runner] LevelManager_OnLevelBeginInitializing 调用完成。");
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
Debug.LogWarning("[Main Runner] LevelManager_OnLevelBeginInitializing 委托为 null,跳过调用。");
|
// Debug.LogWarning("[Main Runner] LevelManager_OnLevelBeginInitializing 委托为 null,跳过调用。");
|
||||||
|
//
|
||||||
if (midMethod != null)
|
// if (midMethod != null)
|
||||||
{
|
// {
|
||||||
Debug.Log("[Main Runner] 正在调用 LevelManager_OnLevelInitialized...");
|
// Debug.Log("[Main Runner] 正在调用 LevelManager_OnLevelInitialized...");
|
||||||
midMethod.Invoke();
|
// midMethod.Invoke();
|
||||||
Debug.Log("[Main Runner] LevelManager_OnLevelInitialized 调用完成。");
|
// Debug.Log("[Main Runner] LevelManager_OnLevelInitialized 调用完成。");
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
Debug.LogWarning("[Main Runner] LevelManager_OnLevelInitialized 委托为 null,跳过调用。");
|
// Debug.LogWarning("[Main Runner] LevelManager_OnLevelInitialized 委托为 null,跳过调用。");
|
||||||
|
//
|
||||||
if (endMethod != null)
|
// if (endMethod != null)
|
||||||
{
|
// {
|
||||||
Debug.Log("[Main Runner] 正在调用 LevelManager_OnAfterLevelInitialized...");
|
// Debug.Log("[Main Runner] 正在调用 LevelManager_OnAfterLevelInitialized...");
|
||||||
endMethod.Invoke();
|
// endMethod.Invoke();
|
||||||
Debug.Log("[Main Runner] LevelManager_OnAfterLevelInitialized 调用完成。");
|
// Debug.Log("[Main Runner] LevelManager_OnAfterLevelInitialized 调用完成。");
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
Debug.LogWarning("[Main Runner] LevelManager_OnAfterLevelInitialized 委托为 null,跳过调用。");
|
// Debug.LogWarning("[Main Runner] LevelManager_OnAfterLevelInitialized 委托为 null,跳过调用。");
|
||||||
// var target = DuckovCustomModel.Core.Data.ModelTarget.Character;
|
// // var target = DuckovCustomModel.Core.Data.ModelTarget.Character;
|
||||||
//
|
// //
|
||||||
// Debug.Log("运行替换");
|
// // Debug.Log("运行替换");
|
||||||
// var currentModelID = DuckovCustomModel.ModEntry.UsingModel?.GetModelID(target) ?? string.Empty;
|
// // var currentModelID = DuckovCustomModel.ModEntry.UsingModel?.GetModelID(target) ?? string.Empty;
|
||||||
// if (string.IsNullOrEmpty(currentModelID))
|
// // if (string.IsNullOrEmpty(currentModelID))
|
||||||
// {
|
// // {
|
||||||
// // 错误日志:未能获取当前模型ID
|
// // // 错误日志:未能获取当前模型ID
|
||||||
// Debug.LogError($"[DuckovCustomModel] Failed to get current model ID for target '{target}'. Current model reference might be null or GetModelID returned null/empty. Returning null.");
|
// // Debug.LogError($"[DuckovCustomModel] Failed to get current model ID for target '{target}'. Current model reference might be null or GetModelID returned null/empty. Returning null.");
|
||||||
// return null;
|
// // return null;
|
||||||
// }
|
// // }
|
||||||
// // 注意:out _ 用于忽略 ModelManager 返回的第一个 out 参数
|
// // // 注意:out _ 用于忽略 ModelManager 返回的第一个 out 参数
|
||||||
// if (!DuckovCustomModel.Managers.ModelManager.FindModelByID(currentModelID, out _, out var modelInfo))
|
// // if (!DuckovCustomModel.Managers.ModelManager.FindModelByID(currentModelID, out _, out var modelInfo))
|
||||||
// {
|
// // {
|
||||||
// // 错误日志:未能找到指定的模型
|
// // // 错误日志:未能找到指定的模型
|
||||||
// Debug.LogError($"[DuckovCustomModel] Model with ID '{currentModelID}' not found by ModelManager for target '{target}'. Returning null.");
|
// // Debug.LogError($"[DuckovCustomModel] Model with ID '{currentModelID}' not found by ModelManager for target '{target}'. Returning null.");
|
||||||
// return null;
|
// // return null;
|
||||||
// }
|
// // }
|
||||||
// if (!modelInfo.CompatibleWithType(target))
|
// // if (!modelInfo.CompatibleWithType(target))
|
||||||
// {
|
// // {
|
||||||
// // 错误日志:模型与目标不兼容
|
// // // 错误日志:模型与目标不兼容
|
||||||
// Debug.LogError($"[DuckovCustomModel] Model '{currentModelID}' is not compatible with target '{target}'. Returning null.");
|
// // Debug.LogError($"[DuckovCustomModel] Model '{currentModelID}' is not compatible with target '{target}'. Returning null.");
|
||||||
// return null;
|
// // return null;
|
||||||
// }
|
// // }
|
||||||
// Debug.Log($"inf{currentModelID}");
|
// // Debug.Log($"inf{currentModelID}");
|
||||||
// // 如果前面的检查都通过,则应用模型
|
// // // 如果前面的检查都通过,则应用模型
|
||||||
// DuckovCustomModel.Managers.ModelListManager.ApplyModelToTarget(target, currentModelID, true);
|
// // DuckovCustomModel.Managers.ModelListManager.ApplyModelToTarget(target, currentModelID, true);
|
||||||
//
|
// //
|
||||||
// var handlers=DuckovCustomModel.Managers.ModelManager.GetAllModelHandlers(target);
|
// // var handlers=DuckovCustomModel.Managers.ModelManager.GetAllModelHandlers(target);
|
||||||
// Debug.Log($"handlers{handlers.Count}");
|
// // Debug.Log($"handlers{handlers.Count}");
|
||||||
// Debug.Log("运行完成");
|
// // Debug.Log("运行完成");
|
||||||
|
//
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
public static Action GetPrivateStaticVoidMethod(string fullMethodName)
|
// public static Action GetPrivateStaticVoidMethod(string fullMethodName)
|
||||||
{
|
// {
|
||||||
var lastDotIndex = fullMethodName.LastIndexOf('.');
|
// var lastDotIndex = fullMethodName.LastIndexOf('.');
|
||||||
if (lastDotIndex == -1 || lastDotIndex == fullMethodName.Length - 1)
|
// if (lastDotIndex == -1 || lastDotIndex == fullMethodName.Length - 1)
|
||||||
{
|
// {
|
||||||
throw new ArgumentException($"无效的方法名格式: {fullMethodName}。应为 'Namespace.ClassName.MethodName'。");
|
// throw new ArgumentException($"无效的方法名格式: {fullMethodName}。应为 'Namespace.ClassName.MethodName'。");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
var fullTypeName = fullMethodName.Substring(0, lastDotIndex);
|
// var fullTypeName = fullMethodName.Substring(0, lastDotIndex);
|
||||||
var methodName = fullMethodName.Substring(lastDotIndex + 1);
|
// var methodName = fullMethodName.Substring(lastDotIndex + 1);
|
||||||
Type targetType = null;
|
// Type targetType = null;
|
||||||
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
// foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||||
{
|
// {
|
||||||
targetType = assembly.GetType(fullTypeName);
|
// targetType = assembly.GetType(fullTypeName);
|
||||||
if (targetType != null)
|
// if (targetType != null)
|
||||||
{
|
// {
|
||||||
break; // 找到类型后停止搜索
|
// break; // 找到类型后停止搜索
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
if (targetType == null)
|
// if (targetType == null)
|
||||||
{
|
// {
|
||||||
throw new TypeLoadException($"在任何已加载的程序集中都未找到类型: {fullTypeName}。");
|
// throw new TypeLoadException($"在任何已加载的程序集中都未找到类型: {fullTypeName}。");
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
var methodInfo = targetType.GetMethod(
|
// var methodInfo = targetType.GetMethod(
|
||||||
methodName,
|
// methodName,
|
||||||
BindingFlags.NonPublic | BindingFlags.Static
|
// BindingFlags.NonPublic | BindingFlags.Static
|
||||||
);
|
// );
|
||||||
if (methodInfo == null)
|
// if (methodInfo == null)
|
||||||
{
|
// {
|
||||||
throw new MissingMethodException(
|
// throw new MissingMethodException(
|
||||||
$"在类型 '{fullTypeName}' 中未找到名为 '{methodName}' 的私有静态方法," +
|
// $"在类型 '{fullTypeName}' 中未找到名为 '{methodName}' 的私有静态方法," +
|
||||||
$"或者该方法不满足私有、静态、无参的条件。"
|
// $"或者该方法不满足私有、静态、无参的条件。"
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
if (methodInfo.GetParameters().Length != 0)
|
// if (methodInfo.GetParameters().Length != 0)
|
||||||
{
|
// {
|
||||||
throw new MissingMethodException(
|
// throw new MissingMethodException(
|
||||||
$"方法 '{fullMethodName}' 存在参数,不符合无参 Action 的要求。"
|
// $"方法 '{fullMethodName}' 存在参数,不符合无参 Action 的要求。"
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
if (methodInfo.ReturnType != typeof(void))
|
// if (methodInfo.ReturnType != typeof(void))
|
||||||
{
|
// {
|
||||||
throw new MissingMethodException(
|
// throw new MissingMethodException(
|
||||||
$"方法 '{fullMethodName}' 返回值不是 void,不符合 Action 的要求。"
|
// $"方法 '{fullMethodName}' 返回值不是 void,不符合 Action 的要求。"
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
return (Action)methodInfo.CreateDelegate(typeof(Action));
|
// return (Action)methodInfo.CreateDelegate(typeof(Action));
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
@@ -59,13 +59,13 @@ namespace CharacterPreview
|
|||||||
var canvasObj = GameObject.Find("Canvas");
|
var canvasObj = GameObject.Find("Canvas");
|
||||||
if (canvasObj == null)
|
if (canvasObj == null)
|
||||||
{
|
{
|
||||||
Debug.Log("Canvas not found");
|
Debug.LogWarning("Canvas not found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var mainMenu=GameObjectUtils.FindObjectByPath(canvasObj, "MainMenuContainer");
|
var mainMenu=GameObjectUtils.FindObjectByPath(canvasObj, "MainMenuContainer");
|
||||||
if (!mainMenu)
|
if (!mainMenu)
|
||||||
{
|
{
|
||||||
Debug.Log("MainMenuContainer not found");
|
Debug.LogWarning("MainMenuContainer not found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,11 +101,13 @@ namespace CharacterPreview
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Item item = await ItemSavesUtilities.LoadItem(characterItemSaveKey);
|
Item? item = null;
|
||||||
|
if (config.data.showEquipment)
|
||||||
|
{
|
||||||
|
item = await ItemSavesUtilities.LoadItem(characterItemSaveKey);
|
||||||
|
}
|
||||||
if (item == null)
|
if (item == null)
|
||||||
{
|
{
|
||||||
Debug.Log($"[CreateCharacterModel] 未找到已保存的 {characterItemSaveKey},将使用默认角色模板创建新角色。");
|
|
||||||
|
|
||||||
var defaultTypeID = GameplayDataSettings.ItemAssets.DefaultCharacterItemTypeID;
|
var defaultTypeID = GameplayDataSettings.ItemAssets.DefaultCharacterItemTypeID;
|
||||||
item = await ItemAssetsCollection.InstantiateAsync(defaultTypeID);
|
item = await ItemAssetsCollection.InstantiateAsync(defaultTypeID);
|
||||||
if (item == null)
|
if (item == null)
|
||||||
@@ -174,13 +176,7 @@ namespace CharacterPreview
|
|||||||
// SetModelShow(false);
|
// SetModelShow(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetModelShow(bool show)
|
|
||||||
{
|
|
||||||
if (characterControl)
|
|
||||||
{
|
|
||||||
characterControl.gameObject.SetActive(show);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static void HideCamera()
|
private static void HideCamera()
|
||||||
@@ -281,7 +277,7 @@ namespace CharacterPreview
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static CharacterMainControl CreateCharacter(
|
public static CharacterMainControl CreateCharacter(
|
||||||
Item itemInstance,
|
Item? itemInstance,
|
||||||
CharacterModel modelPrefab,
|
CharacterModel modelPrefab,
|
||||||
Vector3 pos,
|
Vector3 pos,
|
||||||
Quaternion rotation)
|
Quaternion rotation)
|
||||||
|
|||||||
@@ -6,7 +6,17 @@ namespace CharacterPreview
|
|||||||
{
|
{
|
||||||
public class ShowListen:MonoBehaviour
|
public class ShowListen:MonoBehaviour
|
||||||
{
|
{
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void OnEnable()
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
CreateModel();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CreateModel()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f80e166574440cab3e79aa821c572831e67aeaa3")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
a35a52a5782dcfa53768ea1eb0acd5bd17c1e3d2dfc5d618e23c884a1a098d9e
|
05e90921b2a98aacac8b6099088a4d8164f9fc1fcc89a7c22fac40e610c06d8f
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f80e166574440cab3e79aa821c572831e67aeaa3")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyProductAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("CharacterPreview")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2dcee58ea3d10e33f69ccfa06e1fe3a4fe22d6ce0e9a2c07a40e5dff5a0c39dd
|
c6cacdc0ed3d22de32e004ea661d80af6e373d555843cee095f7aecbcd915537
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
c0134ee1afbfeb7d9ea2fc05c8c4e57fa94629a377c1dde9e9b9bbb913bac608
|
debe5be4a23d52ab9f28d95bc69bf4543c45285e88e03fb2a50aeaa25990c758
|
||||||
|
|||||||
Binary file not shown.
@@ -77,6 +77,7 @@
|
|||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F15eaac0daac842bca117926c0c9be2781a00_003F37_003Fa09d99b2_003FModBehaviour_002Ecs_002Fz_003A4_002D3/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F15eaac0daac842bca117926c0c9be2781a00_003F37_003Fa09d99b2_003FModBehaviour_002Ecs_002Fz_003A4_002D3/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2576bc5c328e49adb3eb5fc3c914a4544600_003Fb4_003Fa1f05223_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F2576bc5c328e49adb3eb5fc3c914a4544600_003Fb4_003Fa1f05223_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4784c8b601ed4e3c93b990a18b8bd7a4a800_003F3e_003Fb80788cb_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F4784c8b601ed4e3c93b990a18b8bd7a4a800_003F3e_003Fb80788cb_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F7c82da41edbe4051b5c92d726719f58b199200_003F05_003Fd2df24c3_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Ff3_003Ff5f2b19a_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b55f2e79e4a30b19151f53aa9af29197600_003Ff3_003Ff5f2b19a_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Faf3c3aa7ce14487c914dade28d96504e70a00_003F26_003Fe998e749_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Faf3c3aa7ce14487c914dade28d96504e70a00_003F26_003Fe998e749_003FModBehaviour_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe495fb8cdd21493497febf8ce397a8d71400_003F4a_003F0c719bc6_003FModBehaviour_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AModBehaviour_002Ecs_002Fl_003AC_0021_003FUsers_003FLenovo_003FAppData_003FRoaming_003FJetBrains_003FRider2025_002E1_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fe495fb8cdd21493497febf8ce397a8d71400_003F4a_003F0c719bc6_003FModBehaviour_002Ecs_002Fz_003A2_002D1/@EntryIndexedValue">ForceIncluded</s:String>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1+f80e166574440cab3e79aa821c572831e67aeaa3")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
|
[assembly: System.Reflection.AssemblyProductAttribute("HideCharacter")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2a2aab917c9869a2c45025a35579f7c6e03404be00ce574a62d12c32df38a826
|
33b6d87c693d3b54f0206eade7075630d13972c437fbd6af17896ab9081fdc0a
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1")]
|
[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.AssemblyProductAttribute("HideCharacter")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HideCharacter")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
5947386f6162b5b02c7300baa77b21c77fa4ed061a138d3fc81f970ad239b319
|
d76c4ba68444a407e65caba3b97339bd2f8684bd333f390c29c7da3203c22bc2
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f80e166574440cab3e79aa821c572831e67aeaa3")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyProductAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
443c8a898256e461af19611af44d76c4c5616c60885973a9cda418947ee407d3
|
2616537ee3639e87ba500e907be87c5e2e8237cc9b3bde98d1ec1685078eab89
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[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.AssemblyProductAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("HitFeedback")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
91dac8144f7f4643815b8939a0d98f00568590da27297be94ea52497a9430f21
|
acb938162d1c64e1817aecf8e6baac4e930f90bfd0fa558410cac6f0a7c21a51
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f80e166574440cab3e79aa821c572831e67aeaa3")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")]
|
[assembly: System.Reflection.AssemblyProductAttribute("SceneSnapshot")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
590d57221818e8b762b4140d886b2c5824a0053ca74f5a40c363ae1a24c1039f
|
48ac337bb1ae1dd0e30c38543b75be944212d9d45892d5d1e7cc2fbe4d2d15c7
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("折纸的小箱子")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0")]
|
[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.AssemblyProductAttribute("SceneSnapshot")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("SceneSnapshot")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
9bf7075992c2ab1ad22b59ed877ab0388f5a130c6bb74696247e17e3ba773369
|
bbee6248b3f74773c40d99f439b4fc037fbbeba7941c4deb9a846c191a483987
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f80e166574440cab3e79aa821c572831e67aeaa3")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyProductAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
27d2423ec537faeeea9ad6f4f91f131258e292f1d7b1155cf4c559a110c9b70f
|
b76cd476cff59e95955c5e7a257eb919538759713401f8555741d66b510fe7fd
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[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.AssemblyProductAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("SceneView")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("SceneView")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
ec6dec26bcfd53d3c84a0a001bc8365bda3279f794af569d235a57241c814223
|
0067b0822f508515ae4d849787f007d073fa7495afc4f8389f6796fcaccab4f5
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f80e166574440cab3e79aa821c572831e67aeaa3")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyProductAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
7b201eac8de5f98d2c3f0e656ea706dfc6d473a4725019b2237bd4195be7634f
|
097766bcceef28c8994e43b3b7081bdc06d95c61971394e2d6d9c526594316fe
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[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.AssemblyProductAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("Theme")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("Theme")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
d47d995ae9d6a870d3b9433f945c9b6cd782a4c69f3dea86ba112fc6f23eaffd
|
a8d1921bdeafad5ec2a906c7966636001ac666755a7301126d4a45e3c9f7d5f4
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fcbdc5649e0b93fd1b771001f53cdbb81da2c78")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f80e166574440cab3e79aa821c572831e67aeaa3")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyProductAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
a278f4017796d0bef86ddcaf9129657ead4f6b174a40f02c4f4ab4151541afdf
|
eeb3989be2c5ee0a6dee4e1e8df8c1c039c434aaddbcf87da999a2255ec83e27
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[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.AssemblyProductAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("UIFrame")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
5cacd6c5da721af1fa92623c1281494f48f6512910f19617f14a84da7edfc68a
|
49e2c52c8d65b0149b702deabe688d5227cfec39da0371b9c72dda7fccb84064
|
||||||
|
|||||||
Reference in New Issue
Block a user