diff --git a/CHANGELOG.md b/CHANGELOG.md index baf914c..ab026bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,37 @@ # Changelog -## [UnRealse] +## [Unrealse] + +新版软接口: +* 新增了对方法的识别,现在可以使用多种预设的接口模式,仅凭一个名称就调用到任意位置的方法!但是如果软接口执行失败,会直接抛出错误,不会隐式返回了。 + +UI库: +* 添加了关于全部复位状态的控制。 + +## [0.5.3] - 2025-09-26 添加一个大顶堆数据容器XericLibrary.Runtime.Type.SpatialAlgorithm.MaxHeap 添加一个untiy委托测试脚本XericLibrary.Runtime.Type.SpatialAlgorithm.BenchMarker 超级单例 * 对超级单例进行详细注释。 -## [0.5.2] +对象库 +* 添加了在节点上获取兄弟节点的功能。 +* 添加在节点兄弟节点上获取组件的功能。 + +对象池 +* 完善UnionSet对象池在动态生成情况下对脏数据的处理,可以更好处理动态情况下切换实例时的情景。 +* 联合对象池不再强制要求手动初始化,而是自动推迟到首次获取时。 +* 修复对象池在间接释放对象时,可能找不到对象的问题 + +列表库 +* 加入了Repeat方法。 + +对weakly稍作优化。 +修复togglemapping在处理通过索引激活时的条件问题。 +在超链接管理器上添加了一个刷新的测试方法。 + +## [0.5.2] - 2025-09-03 修复富文本包裹器中SpriteBlock在处理颜色元素时选择到错误下标的问题。 增加了一些windows窗口命令。 @@ -25,11 +49,7 @@ * 添加了获取目标路径上的文件名和路径名 * 添加对文件路径修复的方法,比如untiy路径是/拼接,windowsPath使用\拼接,混用会错误的问题。 -UI库 -* 整理单选项映射器组件,完善在各情境下的自动处理能力。 -* 添加单选项与泛型的映射组件。 - -## [0.5.1] +## [0.5.1] - 2025-08-05 修复反射库钟使用方法类型检查时,产生数组越界,或空引用问题,这会在部分匿名转换过程中发生。 修复使用匿名对象赋值时,如果类型不匹配会报错的问题,现在改为了产生警告。 diff --git a/Runtime/UI/MacroUI.cs b/Runtime/UI/MacroUI.cs index 2c6edf3..71e883e 100644 --- a/Runtime/UI/MacroUI.cs +++ b/Runtime/UI/MacroUI.cs @@ -134,16 +134,16 @@ namespace XericLibrary.Runtime.MacroLibrary #region 事件委托 public Action OnAnyToggleValueSwitchOn; - + #endregion - + #region 字段属性 #if ODIN_INSPECTOR [SerializeField, LabelText("编辑单选项目值")] #endif private List toggleValue; - + #endregion public override void BakeToggleGroupItems() @@ -163,15 +163,15 @@ namespace XericLibrary.Runtime.MacroLibrary return default; return toggleValue[index]; } - + protected override void ToggleRegister(Toggle t) { base.ToggleRegister(t); OnAnyToggleValueSwitchOn?.Invoke(t, GetValueByIndex(GetIndex(t))); } } - - + + /// /// toggle映射集 /// @@ -208,7 +208,7 @@ namespace XericLibrary.Runtime.MacroLibrary protected List toggleList = new List(); protected bool ToggleListInvalid => toggleList is not { Count: > 0 }; - + public List ToggleList { get @@ -250,7 +250,9 @@ namespace XericLibrary.Runtime.MacroLibrary /// /// 选中项目实例 /// - public Toggle CurrentSelectToggle => ToggleList[_nowSelectToggleIndex]; + public Toggle CurrentSelectToggle => _nowSelectToggleIndex < 0 || _nowSelectToggleIndex > ToggleList.Count + ? null + : ToggleList[_nowSelectToggleIndex]; /// /// 允许清空选项的选中状态 @@ -260,7 +262,7 @@ namespace XericLibrary.Runtime.MacroLibrary get => ToggleGroup.allowSwitchOff; set => ToggleGroup.allowSwitchOff = value; } - + // 映射关系脏 private bool _mappingDirty = false; @@ -270,6 +272,9 @@ namespace XericLibrary.Runtime.MacroLibrary // 当前选中的项目 private int _nowSelectToggleIndex = -1; + // 在任意选项选中时复位允许反选toggle的功能 + private bool _resetAllowToggleOffAtAnyIsOn; + #endregion #region 结构更新 @@ -334,6 +339,7 @@ namespace XericLibrary.Runtime.MacroLibrary else tempToggleList = ToggleGroup.GetToggles(); } + // 需要注意的是,这里不能随意释放掉原来的选项列表 if (tempToggleList is { Count: > 0 }) toggleList = tempToggleList; @@ -360,8 +366,9 @@ namespace XericLibrary.Runtime.MacroLibrary .ToList(); } #if ODIN_INSPECTOR - [HorizontalGroup("GetGroup"), Button("SaveGroup")] + [HorizontalGroup("GetGroup"), Button("SaveGroup")] [DisableInEditorMode] #endif + [Obsolete("正常流程单选项组中的标签已经呈现了必要对象,无需重新设置")] public void SetToggelGroupItems() { var realToggleGroup = ToggleGroup.GetToggles(); @@ -370,8 +377,6 @@ namespace XericLibrary.Runtime.MacroLibrary Debug.LogError("编组无效,或编组成员与实际不符"); return; } - realToggleGroup.Clear(); - realToggleGroup.AddRange(toggleList); Debug.Log("编组设置成功"); } @@ -427,7 +432,7 @@ namespace XericLibrary.Runtime.MacroLibrary if (_noInit) SetToggelGroupItems(); - + _mappingDirty = false; _noInit = false; } @@ -537,14 +542,13 @@ namespace XericLibrary.Runtime.MacroLibrary /// protected virtual void ToggleRegister(Toggle t) { + TryResetToggleGroupAutoOff(); _nowSelectToggleIndex = GetIndex(t); OnAnyToggleSwitchOn?.Invoke(t); OnAnyToggleIndexSwitchOn?.Invoke(_nowSelectToggleIndex); } - - /// /// 获取toggle代表的索引 /// @@ -585,6 +589,7 @@ namespace XericLibrary.Runtime.MacroLibrary public void SetToggleOn(Toggle target) { target.isOn = true; + TryResetToggleGroupAutoOff(); } /// @@ -606,6 +611,7 @@ namespace XericLibrary.Runtime.MacroLibrary public void SetToggleOnWithoutNotify(Toggle target) { _nowSelectToggleIndex = GetIndex(target); + TryResetToggleGroupAutoOff(); target.SetIsOnWithoutNotify(true); } @@ -621,7 +627,42 @@ namespace XericLibrary.Runtime.MacroLibrary } } + + /// + /// 将整个单选项组复位,这同时会标记单选项组上的允许取消操作。 + /// 在下次选中标签时,会自动复位这个标记,确保全部反选的状态仅出现一次。 + /// +#if ODIN_INSPECTOR + [Button("ResetAllToggleOff")] +#endif + public void ResetGroupAllToggleOff() + { + _nowSelectToggleIndex = -1; + if (ToggleGroup == null) + { + Debug.LogError("单选项组不存在..."); + if (!ToggleGroup.allowSwitchOff) + { + _resetAllowToggleOffAtAnyIsOn = true; + ToggleGroup.allowSwitchOff = true; + } + } + ToggleList.ForEachDo(a => a.SetIsOnWithoutNotify(false)); + } + /// + /// 如果此次按下是发生在全部反选之后的首次操作,那么关闭允许关闭的操作。 + /// + private void TryResetToggleGroupAutoOff() + { + if (_resetAllowToggleOffAtAnyIsOn) + { + _resetAllowToggleOffAtAnyIsOn = false; + ToggleGroup.allowSwitchOff = false; + } + } + + /// /// 清除映射结构(不会清除toggle实例) /// @@ -643,7 +684,7 @@ namespace XericLibrary.Runtime.MacroLibrary Clear(); } - + public IEnumerator GetEnumerator() { diff --git a/Runtime/XericLibrary.dll b/Runtime/XericLibrary.dll index 68d868f..b5022d3 100644 Binary files a/Runtime/XericLibrary.dll and b/Runtime/XericLibrary.dll differ diff --git a/Runtime/XericLibrary.xml b/Runtime/XericLibrary.xml index 15eac8c..3c24744 100644 --- a/Runtime/XericLibrary.xml +++ b/Runtime/XericLibrary.xml @@ -8027,77 +8027,6 @@ - - - 获取软接口反射目标,并执行相应的步骤 - - - - - - 失败返回否,比如字段和属性中都没有找到 - - - - 使用软接口名称(对象以及类上成员名称)获取字段属性的值; - - - - - 失败返回否,比如字段和属性中都没有找到 - - - - 使用软接口名称(对象以及类上成员名称)设置字段属性的值; - - - - - 失败返回否,比如字段和属性中都没有找到 - - - - 使用软接口名称(对象以及类上成员名称)获取字段属性的值 - - - - - - - - - - 使用一系列软接口名称(对象以及类上成员名称)获取多个字段属性的值 - - - - - 如果给定名称找不到字段,则返回default - - - - 使用一系列候选软接口名称设置一系列对象上的字段属性值 - - - - - - - - 在一系列对象上使用相同软接口名称获取字段属性值 - - - - - - - - 在一系列对象上使用相同软接口名称设置字段属性值 - - - - - 超驰实例化 @@ -8460,6 +8389,377 @@ + + + 反射加速配置 + + + + + 获取方法的哈希值 + + + + + + + + + 获取接口的哈希值 + + + + + + + + 获取软接口反射目标,并执行相应的步骤 + + + + + + 失败返回否,比如字段和属性中都没有找到 + + + + 使用软接口名称(对象以及类上成员名称)获取字段属性的值; + + + + + 失败返回否,比如字段和属性中都没有找到 + + + + 使用软接口名称(对象以及类上成员名称)设置字段属性的值; + + + + + 失败返回否,比如字段和属性中都没有找到 + + + + 使用软接口名称(对象以及类上成员名称)获取字段属性的值 + + + + + + + + + + 使用一系列软接口名称(对象以及类上成员名称)获取多个字段属性的值 + + + + + 如果给定名称找不到字段,则返回default + + + + 使用一系列候选软接口名称设置一系列对象上的字段属性值 + + + + + + + + 在一系列对象上使用相同软接口名称获取字段属性值 + + + + + + + + 在一系列对象上使用相同软接口名称设置字段属性值 + + + + + + + + 查找符合参数条件的构造方法并创建实例 + + 目标类型 + 构造方法参数 + 找到单个构造方法时的回调 + 找到多个构造方法时的回调 + 是否找到符合条件的构造方法 + + + + 检查构造方法是否匹配参数条件 + + + + + 直接调用指定的构造方法创建实例 + + 目标类型 + 要调用的构造方法 + 构造方法参数 + 创建的实例 + + + + 查找符合条件的方法 + + 目标对象 + 方法名称 + 限定的类(null表示不限定) + 输入参数(不包含out参数) + 输出参数类型(包含返回值作为第一个元素, 为空时表示不参考) + 找到单个方法时的回调 + 找到多个方法时的回调 + 是否找到符合条件的方法 + + + + 检查方法是否匹配参数条件(out算作输出值,而ref则输入和输出都算) + + + + + 执行找到的方法 + + 目标对象 + 要执行的方法 + 输入参数 + 输出参数(将被填充) + 方法的返回值(如果有) + + + + 直接执行无参数方法 + + + + + + + + + 调用一个静态无参方法 + + + + + + + + 调用一个实例无参方法 + + + + + + + + + 调用一个有参静态方法,但不对输出类型作限制 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参实例方法,但不对输出类型作限制 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参实例方法 + + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参实例方法 + + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + + + + 调用一个有参静态方法 + + + + 仅包括输入类型,out标记不算在内 + + 预制函数退化链节点 diff --git a/package.json b/package.json index 52e0ef0..2231d10 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "displayName": "Xeric Library(WebGL)", "version": "0.5.3", "unity": "2021.3", - "description": "\u6b22\u8fce\u4f7f\u7528Xeric Library\uff0c\u8fd9\u662f\u4e00\u4e2a\u4e13\u6ce8\u4ee3\u7801\u7684\u6269\u5c55\u5e93\r\n\r\n\u25cf\u6269\u5c55Unity\u6210\u5458\u8bed\u6cd5\uff0c\u6269\u5c55\u6570\u636e\u7ed3\u6784Linq\u8bed\u6cd5\uff0c\u589e\u52a0\u8fd0\u7b97\u7b26\u8bed\u6cd5\uff0c\u652f\u6301\u5404\u7c7b\u9690\u5f0f\u7528\u6cd5\uff0c\u652f\u6301\u591a\u79cd\u8f6f\u5f15\u7528\u65b9\u6cd5\uff1b \u9488\u5bf9\u5927\u90e8\u5206\u4f7f\u7528\u573a\u666f\u52a0\u5165\u4e86\uff1a \u51fd\u6570\u5e73\u6ed1\u3001 \u591a\u9879\u5f0f\u8ba1\u7b97\u3001 \u6743\u91cd\u62df\u5408\u3001 \u8fc7\u7a0b\u5206\u7ea7\u3001 \u5de5\u4e1a\u63a7\u5236\u3001 \u66f2\u7ebf\u7ed8\u5236\u3001 \u8def\u5f84\u8bbe\u7f6e\u3001 \u5bf9\u8c61\u63a7\u5236\u3001 \u8fed\u4ee3\u6269\u5c55\u3001 \u7a7a\u95f4\u53d8\u6362\u3001 \u72ec\u7279\u7ed3\u6784\u3001 \u6587\u672c\u683c\u5f0f\u3001 \u7c7b\u578b\u8f6c\u6362\u3001 \u673a\u5668\u7f16\u7801\u3001 \u5f00\u53d1\u8c03\u8bd5\u3001 \u52a8\u6001\u751f\u6210\u3001 \u51e0\u4f55\u521b\u5efa\u3001 \u5feb\u901f\u6c60\u5316\u3001 \u5bfc\u822a\u5bfb\u8def\u3001 \u9694\u79bb\u63a7\u5236\u3001 \u9694\u79bb\u8f93\u5165\u3001 \u8bed\u4e49\u5316\u59d4\u6258\u3001 \u53cd\u5c04\u8d85\u9a70\u3001 \u6570\u5b66\u5e38\u6570\u3001 \u5355\u4f4d\u6362\u7b97\u3001 \u6392\u5e8f\u7b97\u6cd5\u3001 \u7a0b\u5e8f\u8c03\u7528\u3001 \u7f51\u7edc\u8fde\u63a5\u7b49\u5feb\u6377\u7528\u6cd5\u3002 \r\n\u25cf\u591a\u79cd\u7279\u6b8a\u7c7b\u578b\uff1a \u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a\u591a\u7ef4\u5e03\u5c14\u3001 \u6837\u6761\u66f2\u7ebf\u3001 \u8d85\u7ea7\u5355\u4f8b\u3001 \u591a\u4f8b\u7cfb\u7edf\u3001 \u90bb\u5c45\u7f51\u7edc\u3001 \u56db\u53c9\u6811\u3001 \u5b57\u5178\u6811\u3001 \u8f6f\u5f15\u7528\u5c01\u88c5\u5668\u7b49\u3002 \r\n\u25cf\u5404\u79cd\u5e38\u7528\u811a\u672c\uff1a\u6e38\u620f\u4ea4\u4e92\u3001 \u754c\u9762\u9002\u914d\u3001 \u5f31\u6269\u5c55\u3001 \u7ed8\u5236\u5de5\u5382\u3001 SQL\u6269\u5c55\u3002\r\n\r\n\u25cf\u517c\u5bb9\u4e0d\u89c4\u8303\u7a0b\u5e8f\uff1a\u9488\u5bf9\u5404\u79cd\u4e0d\u89c4\u8303\u7684\uff0c\u6216\u6beb\u65e0\u8bbe\u8ba1\u89c4\u5219\u53ef\u8a00\u7684\u7a0b\u5e8f\uff0c\u63d0\u4f9b\u4e86\u66f4\u591a\u57fa\u4e8e\u53cd\u5c04\uff0cCIL\u7279\u6027\u7b49\u4f4e\u7ea7\u8bed\u6cd5\u7684\u7a0b\u5e8f\u6269\u5c55\uff0c\u5141\u8bb8\u901a\u8fc7\u5404\u79cd\u65b9\u5f0f\u5feb\u901f\u5b9e\u73b0\u76ee\u7684\uff1a\r\n1.\u811a\u672c\u6ca1\u6709\u7ee7\u627f\u5355\u4f8b\uff1f\u65e0\u6240\u8c13\uff0c\u8d85\u7ea7\u5355\u4f8b\u4e0d\u9700\u8981\u58f0\u540d\uff0c\u4e5f\u4e0d\u9700\u8981\u4fee\u6539\u4efb\u4f55\u811a\u672c\u5185\u5bb9\u5c31\u53ef\u4ee5\u5b9e\u73b0\u5355\u4f8b\u3002\r\n2.\u591a\u4e2a\u6570\u636e\u7ed3\u6784\u5b57\u6bb5\u4e4b\u95f4\u5197\u4f59\u91cd\u590d\uff1f\u65e0\u6240\u8c13\uff0c\u8f6f\u63a5\u53e3SoftInterface\u53ea\u9700\u8981\u4e00\u4e2a\u968f\u610f\u7684\u540d\u79f0\u5c31\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u503c\uff0c\u4f60\u53ef\u4ee5\u7528\u8f6f\u63a5\u53e3\u5728\u4efb\u610f\u5bf9\u8c61\u4e0a\u904d\u5386\u5b57\u6bb5\u5c5e\u6027\u7b49\u5185\u5bb9\u3002\r\n3.\u4e0d\u559c\u6b22\u5bf9\u8c61\u6c60\u7684\u521d\u59cb\u5316\uff1f\u6211\u4e5f\u662f\uff0cMacroPool.UnionSet \u8054\u5408\u5bf9\u8c61\u6c60\u652f\u6301\u5c06\u5fc5\u8981\u914d\u7f6e\u9879\u76ee\u6210\u5458\u5f00\u653e\u5230\u754c\u9762\u4e0a\uff0c\u7136\u540e\u76f4\u63a5\u8c03\u7528get\u5c31\u53ef\u4ee5\uff01\r\n4.\u7a0b\u5e8fUI\u6846\u67b6\u548c\u903b\u8f91\u6846\u67b6\u9ad8\u7ea7\u8026\u5408\u65e0\u4ece\u4e0b\u624b\uff1f\u6709\u70b9\u9ebb\u70e6\uff0c\u4e0d\u8fc7\u83dc\u5355\u7279\u6027\uff0c\u67e5\u627e\u7279\u6027\uff0c\u547d\u540d\u6807\u8bb0\u7279\u6027\u53ef\u4ee5\u5e2e\u52a9\u4f60\u65e0\u89c6\u5185\u5bb9\u67e5\u627e\u5b57\u6bb5\u5c5e\u6027\u65b9\u6cd5\u7c7b\u578b\u7b49\u5185\u5bb9\uff0c\u76f4\u63a5\u5c06\u7c7b\u4f20\u5165\u5c31\u80fd\u7a0b\u5e8f\u5316\u751f\u6210\u83dc\u5355\u754c\u9762\u3002\r\n5.\u6570\u636e\u7ed3\u6784\u592a\u591a\u5bfc\u81f4\u5728\u4ea4\u4e92\u65f6\u7a0b\u5e8f\u5361\u987f\uff1f\u8fd9\u662f\u4e2a\u95ee\u9898\uff0cXericUIActionVessel\u63d2\u4ef6\u4e2d\u63d0\u4f9b\u4e86\u591a\u79cd\u6570\u636e\u7ed3\u6784\u865a\u62df\u5316\u6280\u672f\uff0c\u57fa\u4e8e\u865a\u62df\u5316\u62c6\u5206\u5927\u91cf\u6570\u636e\u53ef\u4ee5\u51cf\u5c11\u538b\u529b\u3002\r\n6.\u559c\u6b22\u4f7f\u7528\u51fd\u6570\u5f0f\u548clinq\u8bed\u53e5\u7b80\u5316\u7a0b\u5e8f\uff1f\u6ca1\u6709\u95ee\u9898\uff01\u679a\u4e3e\u53ef\u4ee5\u4f7f\u7528MacroEnum\u5206\u7c7b\u548cMacroEnum\u6269\u5c55\uff1b\u6570\u5b66\uff0c\u5411\u91cf\uff0c\u51e0\u4f55\uff0c\u6570\u636e\u7ed3\u6784\u6269\u5c55\uff0c\u5e38\u89c1\u7b97\u6cd5\uff0c\u5e38\u7528\u5b57\u7b26\u8ba1\u7b97\u5df2\u7ecf\u5168\u90e8\u5185\u5d4cMacroMath\u5206\u7c7b\u4e2d\u3002\u8fd8\u6709\u66f4\u591a\u7b49\u4f60\u63a2\u7d22\uff01\r\n7.\u60f3\u4f7f\u7528\u66f4\u591a\u4e13\u7528\u6570\u636e\u7ed3\u6784\uff1f\u5927\u9876\u5806\uff0c\u56db\u53c9\u6811\uff0c\u516b\u53c9\u6811\uff0c\u5b57\u5178\u6811\uff0c\u65f6\u95f4\u6233\uff0c\u591a\u6bb5\u7ebf\uff0c\u8d1d\u585e\u5c14\uff0c\u591a\u7ef4\u5e03\u5c14\uff0c\u53cc\u751f\u54c8\u5e0c\u8868\uff0c\u76f8\u90bb\u7f51\u683c\u7b49\u7b49\u5185\u5bb9\u4efb\u541b\u4f7f\u7528\uff0c\u800c\u4e14\u8fd9\u4e9b\u6570\u636e\u7ed3\u6784\u90fd\u6709\u4e13\u7528\u7684\u754c\u9762\uff0c\u754c\u9762\u7f8e\u5316\u8fd9\u4e00\u5757\u3002\r\n8.\u60f3\u8981\u7acb\u523b\u80fd\u591f\u5728\u573a\u666f\u4e2d\u79fb\u52a8\u89d2\u8272\uff1f\u7b2c\u4e00\u4eba\u79f0\uff0c\u7b2c\u4e09\u4eba\u79f0\uff0c\u4e0a\u5e1d\u89c6\u89d2\u5df2\u7ecf\u51c6\u5907\u5c31\u7eea\uff01\r\n9.\u538c\u70e6\u590d\u6742\u7684\u6309\u952e\u68c0\u67e5\u903b\u8f91\uff1f\u6211\u5e2e\u4f60\uff01MacroKey\u4e2d\u7684\u6309\u952e\u72b6\u6001\u8868\u652f\u6301\u4ee5\u81ea\u5df1\u559c\u6b22\u7684\u72b6\u6001\u548c\u9891\u7387\u5904\u7406\u6309\u952e\uff0c\u5e76\u5904\u7406\u6210\u77ed\u6309\uff0c\u957f\u6309\uff0c\u53cc\u51fb\uff0c\u8fde\u51fb\uff0c\u62d6\u62fd\uff0c\u4ee5\u53ca\u8fd9\u4e9b\u72b6\u6001\u7684\u6309\u4e0b\u548c\u91ca\u653e\u72b6\u6001\uff01\u652f\u6301\u4ee5\u65f6\u95f4\uff0c\u5750\u6807\u7b49\u5171\u8ba14\u79cd\u6a21\u5f0f\u5904\u7406\u3002\r\n10.\u62c5\u5fc3\u517c\u5bb9\u6027\u5417\uff1f\u7a0b\u5e8f\u4e3b\u8981\u57fa\u4e8e2022\u7248\u672c\u5f00\u53d1\uff0c\u5411\u4e0b\u517c\u5bb92021\uff0c\u5411\u4e0a\u652f\u63016000\uff0c\u4e0d\u6d89\u53ca\u6e32\u67d3\u7ba1\u7ebfAPI\uff0c\u517c\u5bb9\u6027\u8f83\u597d\u3002\r\n\r\n\u25cf\u5f53\u524d\u63d2\u4ef6\u63d0\u4f9b\u7f16\u8f91\u5668\u529f\u80fd\uff1aDeepseek AI\u5bf9\u8bdd\u3002\r\n\u66f4\u591a\u7f16\u8f91\u5668\u529f\u80fd\u53c2\u8003\uff1a\r\n\u25cf\u5b89\u88c5Xeric Blueprint Graph\u4ee5\u83b7\u53d6Unity\u4e0a\u84dd\u56fe\u8282\u70b9\u529f\u80fd, \u5e76\u652f\u6301Xeric\u51fd\u6570\u5e93\u529f\u80fd\u3002\r\n\u25cf\u5b89\u88c5Xeric UI Graph\u4ee5\u83b7\u53d6\u84dd\u56fe\u5316UI\u751f\u6210\u529f\u80fd, \u4f7f\u7528\u84dd\u56fe\u903b\u8f91\u63a7\u5236UI\u4ea4\u4e92, \u751f\u6210\u903b\u8f91, \u5e76\u652f\u6301Xeric\u51fd\u6570\u5e93\u529f\u80fd\u3002\r\n\u25cf\u5b89\u88c5Digital Twin Tool\u4ee5\u83b7\u53d6\u5e38\u7528\u8c03\u8bd5\u5de5\u5177\u96c6\u3002\r\n\u25cf\u5b89\u88c5Nexus Frame Flow\u4ee5\u83b7\u53d6\u5de5\u4f5c\u67b6\u6784\u5904\u7406\u529f\u80fd\u3002\r\n\u25cf\u5b89\u88c5Xeric Editor\u8f85\u52a9\u5f15\u64ce\u5927\u7eb2\u7f8e\u5316\u7ec4\u4ef6\u3001 \u8d44\u6e90\u5783\u573e\u5904\u7406\u7ec4\u4ef6\u3001 \u8d44\u6e90\u7f13\u5b58\u7ec4\u4ef6\u3001 \u5feb\u901f\u622a\u56fe\u529f\u80fd, \u4ee5\u53ca\u66f4\u591a\u5feb\u6377\u952e\u529f\u80fd\r\n\r\n\u9700\u8981\u6ce8\u610f\uff1a\u63d2\u4ef6\u5185\u5982\u679c\u6d89\u53ca\u591a\u5e73\u53f0\u5207\u6362, \u53ef\u80fd\u4f1a\u63d0\u4f9b\u591a\u79cd\u81ea\u52a8\u6216\u624b\u52a8\u7684\u5207\u6362\u65b9\u6848, \u6216\u9ed8\u8ba4\u4f7f\u7528windows\u5e73\u53f0, \u8bf7\u6ce8\u610f\u8fa8\u522b\u3002\r\n\r\n\u5efa\u8bae\u6dfb\u52a0ODin\u63d2\u4ef6, \u4fbf\u4e8e\u5448\u73b0\u66f4\u591a\u754c\u9762\u529f\u80fd\u3002\r\n\r\n\u66f4\u591a\u8be6\u7ec6\u5185\u5bb9\u8bf4\u660e\u8bf7\u7ffb\u9605README\u6587\u6863\u3002\r\n\u5982\u679c\u53d1\u73b0\u4efb\u4f55\u95ee\u9898, \u5305\u62ec\u7248\u672c\u517c\u5bb9\u6027, \u8ba1\u7b97\u9519\u8bef, \u8c03\u7528\u9519\u8bef, \u4f7f\u7528\u95ee\u9898, \u90fd\u53ef\u4ee5\u901a\u8fc7\u53d1\u5e03\u9875Issues\u6216\u5176\u4ed6\u8054\u7cfb\u65b9\u5f0f\u627e\u6211\u83b7\u5f97\u5e2e\u52a9\u3002", + "description": "\u6b22\u8fce\u4f7f\u7528Xeric Library\uff0c\u8fd9\u662f\u4e00\u4e2a\u4e13\u6ce8\u4ee3\u7801\u7684\u6269\u5c55\u5e93\r\n\r\n\u25cf\u6269\u5c55Unity\u6210\u5458\u8bed\u6cd5\uff0c\u6269\u5c55\u6570\u636e\u7ed3\u6784Linq\u8bed\u6cd5\uff0c\u589e\u52a0\u8fd0\u7b97\u7b26\u8bed\u6cd5\uff0c\u652f\u6301\u5404\u7c7b\u9690\u5f0f\u7528\u6cd5\uff0c\u652f\u6301\u591a\u79cd\u8f6f\u5f15\u7528\u65b9\u6cd5\uff1b \u9488\u5bf9\u5927\u90e8\u5206\u4f7f\u7528\u573a\u666f\u52a0\u5165\u4e86\uff1a \u51fd\u6570\u5e73\u6ed1\u3001 \u591a\u9879\u5f0f\u8ba1\u7b97\u3001 \u6743\u91cd\u62df\u5408\u3001 \u8fc7\u7a0b\u5206\u7ea7\u3001 \u5de5\u4e1a\u63a7\u5236\u3001 \u66f2\u7ebf\u7ed8\u5236\u3001 \u8def\u5f84\u8bbe\u7f6e\u3001 \u5bf9\u8c61\u63a7\u5236\u3001 \u8fed\u4ee3\u6269\u5c55\u3001 \u7a7a\u95f4\u53d8\u6362\u3001 \u72ec\u7279\u7ed3\u6784\u3001 \u6587\u672c\u683c\u5f0f\u3001 \u7c7b\u578b\u8f6c\u6362\u3001 \u673a\u5668\u7f16\u7801\u3001 \u5f00\u53d1\u8c03\u8bd5\u3001 \u52a8\u6001\u751f\u6210\u3001 \u51e0\u4f55\u521b\u5efa\u3001 \u5feb\u901f\u6c60\u5316\u3001 \u5bfc\u822a\u5bfb\u8def\u3001 \u9694\u79bb\u63a7\u5236\u3001 \u9694\u79bb\u8f93\u5165\u3001 \u8bed\u4e49\u5316\u59d4\u6258\u3001 \u53cd\u5c04\u8d85\u9a70\u3001 \u6570\u5b66\u5e38\u6570\u3001 \u5355\u4f4d\u6362\u7b97\u3001 \u6392\u5e8f\u7b97\u6cd5\u3001 \u7a0b\u5e8f\u8c03\u7528\u3001 \u7f51\u7edc\u8fde\u63a5\u7b49\u5feb\u6377\u7528\u6cd5\u3002 \r\n\u25cf\u591a\u79cd\u7279\u6b8a\u7c7b\u578b\uff1a \u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a\u591a\u7ef4\u5e03\u5c14\u3001 \u6837\u6761\u66f2\u7ebf\u3001 \u8d85\u7ea7\u5355\u4f8b\u3001 \u591a\u4f8b\u7cfb\u7edf\u3001 \u90bb\u5c45\u7f51\u7edc\u3001 \u56db\u53c9\u6811\u3001 \u5b57\u5178\u6811\u3001 \u8f6f\u5f15\u7528\u5c01\u88c5\u5668\u7b49\u3002 \r\n\u25cf\u5404\u79cd\u5e38\u7528\u811a\u672c\uff1a\u6e38\u620f\u4ea4\u4e92\u3001 \u754c\u9762\u9002\u914d\u3001 \u5f31\u6269\u5c55\u3001 \u7ed8\u5236\u5de5\u5382\u3001 SQL\u6269\u5c55\u3002\r\n\r\n\u25cf\u517c\u5bb9\u4e0d\u89c4\u8303\u7a0b\u5e8f\uff1a\u9488\u5bf9\u5404\u79cd\u4e0d\u89c4\u8303\u7684\uff0c\u6216\u6beb\u65e0\u8bbe\u8ba1\u89c4\u5219\u53ef\u8a00\u7684\u7a0b\u5e8f\uff0c\u63d0\u4f9b\u4e86\u66f4\u591a\u57fa\u4e8e\u53cd\u5c04\uff0cCIL\u7279\u6027\u7b49\u4f4e\u7ea7\u8bed\u6cd5\u7684\u7a0b\u5e8f\u6269\u5c55\uff0c\u5141\u8bb8\u901a\u8fc7\u5404\u79cd\u65b9\u5f0f\u5feb\u901f\u5b9e\u73b0\u76ee\u7684\uff1a\r\n1.\u811a\u672c\u6ca1\u6709\u7ee7\u627f\u5355\u4f8b\uff1f\u65e0\u6240\u8c13\uff0c\u8d85\u7ea7\u5355\u4f8b\u4e0d\u9700\u8981\u58f0\u540d\uff0c\u4e5f\u4e0d\u9700\u8981\u4fee\u6539\u4efb\u4f55\u811a\u672c\u5185\u5bb9\u5c31\u53ef\u4ee5\u5b9e\u73b0\u5355\u4f8b\u3002\r\n2.\u591a\u4e2a\u6570\u636e\u7ed3\u6784\u5b57\u6bb5\u4e4b\u95f4\u5197\u4f59\u91cd\u590d\uff1f\u65e0\u6240\u8c13\uff0c\u8f6f\u63a5\u53e3SoftInterface\u53ea\u9700\u8981\u4e00\u4e2a\u540d\u79f0\u5c31\u53ef\u4ee5\u83b7\u53d6\u548c\u8bbe\u7f6e\u503c\uff0c\u4f60\u53ef\u4ee5\u7528\u8f6f\u63a5\u53e3\u5728\u4efb\u610f\u5bf9\u8c61\u4e0a\u904d\u5386\u5b57\u6bb5\uff0c\u5c5e\u6027\uff0c\u65b9\u6cd5\uff0c\u53ea\u8981\u4e0d\u662f\u533f\u540d\u7684\u90fd\u53ef\u4ee5\u8c03\u7528\uff01\r\n3.\u4e0d\u559c\u6b22\u5bf9\u8c61\u6c60\u7684\u521d\u59cb\u5316\uff1f\u6211\u4e5f\u662f\uff0cMacroPool.UnionSet \u8054\u5408\u5bf9\u8c61\u6c60\u652f\u6301\u5c06\u5fc5\u8981\u914d\u7f6e\u9879\u76ee\u6210\u5458\u5f00\u653e\u5230\u754c\u9762\u4e0a\uff0c\u7136\u540e\u76f4\u63a5\u8c03\u7528get\u5c31\u53ef\u4ee5\uff01\r\n4.\u7a0b\u5e8fUI\u6846\u67b6\u548c\u903b\u8f91\u6846\u67b6\u9ad8\u5ea6\u8026\u5408\u65e0\u4ece\u4e0b\u624b\uff1f\u6709\u70b9\u9ebb\u70e6\uff0c\u4e0d\u8fc7\u83dc\u5355\u7279\u6027\uff0c\u67e5\u627e\u7279\u6027\uff0c\u547d\u540d\u6807\u8bb0\u7279\u6027\u53ef\u4ee5\u5e2e\u52a9\u4f60\u65e0\u89c6\u5185\u5bb9\u67e5\u627e\u5b57\u6bb5\u5c5e\u6027\u65b9\u6cd5\u7c7b\u578b\u7b49\u5185\u5bb9\uff0c\u76f4\u63a5\u5c06\u7c7b\u4f20\u5165\u5c31\u80fd\u7a0b\u5e8f\u5316\u751f\u6210\u83dc\u5355\u754c\u9762\u3002\r\n5.\u8d85\u7ea7\u591a\u7684\u6570\u636e\u91cf\u5c06\u5bfc\u81f4\u7a0b\u5e8f\u5361\u987f\uff1f\u8fd9\u662f\u4e2a\u95ee\u9898\uff0c\u53ef\u4ee5\u5b89\u88c5XericUIActionVessel\u63d2\u4ef6\uff0c\u5176\u4e2d\u63d0\u4f9b\u4e86\u591a\u79cd\u57fa\u4e8eUI\u6846\u67b6\u7684\u6570\u636e\u7ed3\u6784\u865a\u62df\u5316\u6280\u672f\uff0c\u57fa\u4e8e\u865a\u62df\u5316\u62c6\u5206\u5927\u91cf\u6570\u636e\u53ef\u4ee5\u51cf\u5c11\u538b\u529b\uff0c\u7cbe\u7ec6\u7684\u6743\u80fd\u5212\u5206\u4e5f\u80fd\u8ba9\u8fd9\u4e9b\u865a\u62df\u5316\u7ed3\u6784\u5728\u5176\u4ed6\u5730\u65b9\u53d1\u5149\u53d1\u70ed\uff01\u3002\r\n6.\u559c\u6b22\u4f7f\u7528\u51fd\u6570\u5f0f\u548clinq\u8bed\u53e5\u7f16\u5199\u7a0b\u5e8f\uff1f\u6ca1\u6709\u95ee\u9898\uff01\u679a\u4e3e\u53ef\u4ee5\u4f7f\u7528MacroEnum\u5206\u7c7b\u548cMacroEnum\u6269\u5c55\uff1b\u6570\u5b66\uff0c\u5411\u91cf\uff0c\u51e0\u4f55\uff0c\u6570\u636e\u7ed3\u6784\u6269\u5c55\uff0c\u5e38\u89c1\u7b97\u6cd5\uff0c\u5e38\u7528\u5b57\u7b26\u8ba1\u7b97\u5df2\u7ecf\u5168\u90e8\u5185\u5d4cMacroMath\u5206\u7c7b\u4e2d\uff0c\u5927\u91cf\u4e0e\u6570\u5b66\uff0c\u5bf9\u8c61\uff0c\u6570\u636e\u7ed3\u6784\u76f8\u5173\u7684\u5feb\u6377\u8bed\u53e5\uff0c\u8fd8\u6709\u66f4\u591a\u7b49\u4f60\u63a2\u7d22\uff01\r\n7.\u60f3\u4f7f\u7528\u66f4\u591a\u4e13\u7528\u6570\u636e\u7ed3\u6784\uff1f\u5927\u9876\u5806\uff0c\u56db\u53c9\u6811\uff0c\u516b\u53c9\u6811\uff0c\u5b57\u5178\u6811\uff0c\u65f6\u95f4\u6233\uff0c\u591a\u6bb5\u7ebf\uff0c\u8d1d\u585e\u5c14\uff0c\u591a\u7ef4\u5e03\u5c14\uff0c\u53cc\u751f\u54c8\u5e0c\u8868\uff0c\u76f8\u90bb\u7f51\u683c\u7b49\u7b49\u5185\u5bb9\u4efb\u541b\u4f7f\u7528\uff0c\u800c\u4e14\u8fd9\u4e9b\u6570\u636e\u7ed3\u6784\u90fd\u6709\u4e13\u7528\u7684\u754c\u9762\uff0c\u754c\u9762\u7f8e\u5316\u8fd9\u4e00\u5757\u3002\r\n8.\u60f3\u8981\u7acb\u523b\u80fd\u591f\u5728\u573a\u666f\u4e2d\u79fb\u52a8\u89d2\u8272\uff1f\u7b2c\u4e00\u4eba\u79f0\uff0c\u7b2c\u4e09\u4eba\u79f0\uff0c\u4e0a\u5e1d\u89c6\u89d2\u5df2\u7ecf\u51c6\u5907\u5c31\u7eea\uff01\r\n9.\u538c\u70e6\u590d\u6742\u7684\u6309\u952e\u68c0\u67e5\u903b\u8f91\uff1f\u6211\u5e2e\u4f60\uff01MacroKey\u4e2d\u7684\u6309\u952e\u72b6\u6001\u8868\u652f\u6301\u4ee5\u81ea\u5df1\u559c\u6b22\u7684\u72b6\u6001\u548c\u9891\u7387\u5904\u7406\u6309\u952e\uff0c\u5e76\u5904\u7406\u6210\u77ed\u6309\uff0c\u957f\u6309\uff0c\u53cc\u51fb\uff0c\u8fde\u51fb\uff0c\u62d6\u62fd\uff0c\u4ee5\u53ca\u8fd9\u4e9b\u72b6\u6001\u7684\u6309\u4e0b\u548c\u91ca\u653e\u72b6\u6001\uff01\u652f\u6301\u4ee5\u65f6\u95f4\uff0c\u5750\u6807\u7b49\u5171\u8ba14\u79cd\u6a21\u5f0f\u5904\u7406\uff0c\u6ee1\u8db3\u7edd\u5927\u90e8\u5206\u573a\u666f\u7684\u7ec6\u5206\u9700\u6c42\u3002\r\n10.\u62c5\u5fc3\u517c\u5bb9\u6027\u5417\uff1f\u7a0b\u5e8f\u4e3b\u8981\u57fa\u4e8e2022\u7248\u672c\u5f00\u53d1\uff0c\u5411\u4e0b\u517c\u5bb92021\uff0c\u5411\u4e0a\u652f\u63016000\uff0c\u4e0d\u6d89\u53ca\u6e32\u67d3\u7ba1\u7ebfAPI\uff0c\u517c\u5bb9\u6027\u8f83\u597d\u3002\r\n\r\n\u66f4\u591a\u7f16\u8f91\u5668\u529f\u80fd\u53c2\u8003\uff1a\r\n\u25cf\u5b89\u88c5Xeric Blueprint Graph\u4ee5\u83b7\u53d6Unity\u4e0a\u84dd\u56fe\u8282\u70b9\u529f\u80fd, \u5e76\u652f\u6301Xeric\u51fd\u6570\u5e93\u529f\u80fd\u3002\r\n\u25cf\u5b89\u88c5Xeric UI Graph\u4ee5\u83b7\u53d6\u84dd\u56fe\u5316UI\u751f\u6210\u529f\u80fd, \u4f7f\u7528\u84dd\u56fe\u903b\u8f91\u63a7\u5236UI\u4ea4\u4e92, \u751f\u6210\u903b\u8f91, \u5e76\u652f\u6301Xeric\u51fd\u6570\u5e93\u529f\u80fd\u3002\r\n\u25cf\u5b89\u88c5Digital Twin Tool\u4ee5\u83b7\u53d6\u5e38\u7528\u8c03\u8bd5\u5de5\u5177\u96c6\u3002\r\n\u25cf\u5b89\u88c5Nexus Frame Flow\u4ee5\u83b7\u53d6\u5de5\u4f5c\u67b6\u6784\u6d41\u5904\u7406\u529f\u80fd\u3002\r\n\u25cf\u5b89\u88c5Xeric Editor\u8f85\u52a9\u5f15\u64ce\u5927\u7eb2\u7f8e\u5316\u7ec4\u4ef6\u3001 \u8d44\u6e90\u5783\u573e\u5904\u7406\u7ec4\u4ef6\u3001 \u8d44\u6e90\u7f13\u5b58\u7ec4\u4ef6\u3001 \u5feb\u901f\u622a\u56fe\u529f\u80fd, \u4ee5\u53ca\u66f4\u591a\u5feb\u6377\u952e\u529f\u80fd\r\n\r\n\u5f53\u524d\u63d2\u4ef6\u63d0\u4f9b\u7f16\u8f91\u5668\u529f\u80fd\uff1aDeepseek AI\u5bf9\u8bdd\u3002\r\n\n\u9700\u8981\u6ce8\u610f\uff1a\u63d2\u4ef6\u5185\u5982\u679c\u6d89\u53ca\u591a\u5e73\u53f0\u5207\u6362, \u53ef\u80fd\u4f1a\u63d0\u4f9b\u591a\u79cd\u81ea\u52a8\u6216\u624b\u52a8\u7684\u5207\u6362\u65b9\u6848, \u6216\u9ed8\u8ba4\u4f7f\u7528windows\u5e73\u53f0, \u8bf7\u6ce8\u610f\u8fa8\u522b\u3002\r\n\r\n\u5efa\u8bae\u6dfb\u52a0ODin\u63d2\u4ef6, \u4fbf\u4e8e\u5448\u73b0\u66f4\u591a\u754c\u9762\u529f\u80fd\u3002\r\n\r\n\u66f4\u591a\u8be6\u7ec6\u5185\u5bb9\u8bf4\u660e\u8bf7\u7ffb\u9605README\u6587\u6863\u3002\r\n\u5982\u679c\u53d1\u73b0\u4efb\u4f55\u95ee\u9898, \u5305\u62ec\u7248\u672c\u517c\u5bb9\u6027, \u8ba1\u7b97\u9519\u8bef, \u8c03\u7528\u9519\u8bef, \u4f7f\u7528\u95ee\u9898, \u90fd\u53ef\u4ee5\u901a\u8fc7\u53d1\u5e03\u9875Issues\u6216\u5176\u4ed6\u8054\u7cfb\u65b9\u5f0f\u627e\u6211\u83b7\u5f97\u5e2e\u52a9\u3002", "keywords": [ "unity", "xeric"