This commit is contained in:
2025-09-16 09:35:58 +08:00
parent 014b5da193
commit 858387bc2e
7 changed files with 758 additions and 170 deletions
+18 -5
View File
@@ -2,15 +2,28 @@
## [UnRealse]
添加一个大顶堆数据容器XericLibrary.Runtime.Type.SpatialAlgorithm.MaxHeap
添加一个untiy委托测试脚本XericLibrary.Runtime.Type.SpatialAlgorithm.BenchMarker
超级单例
* 对超级单例进行详细注释。
## [0.5.2]
修复富文本包裹器中SpriteBlock在处理颜色元素时选择到错误下标的问题。
增加了一些windows窗口命令。
超链接管理器增加了在启动时自动修复射线检测的问题,详见XchartsUIForXeric #1
列表库添加
* 迭代直到[真,假,相等,不等]
* 迭代重复
列表库
* 添加了迭代直到[真,假,相等,不等]
* 添加了迭代重复
* 差异比较库添加了通过数量比较(也支持替换)
* 添加了更多merge语法,支持合并类与输出类类型不一致
* 修复foreachDo迭代用法中内插语法的用法。现在启用内插后可以正确输出了。同时允许使用null代替action了。
* 添加编组输出条件,支持手动定义委托触发,相等性触发。
* 添加连续计数。
列表库差异比较库添加了
* 通过数量比较(也支持替换)
文件库
* 添加了获取目标路径上的文件名和路径名
* 添加对文件路径修复的方法,比如untiy路径是/拼接,windowsPath使用\拼接,混用会错误的问题。
## [0.5.1]
Binary file not shown.
+1 -1
View File
@@ -1,3 +1,3 @@
fileFormatVersion: 2
guid: 3f162d80c71a441780f9bc255eb5e169
guid: 34832ce232e3acf45b7ca41349d5515e
timeCreated: 1734339863
+79 -26
View File
@@ -148,22 +148,41 @@ namespace XericLibrary.Runtime.MacroLibrary
private List<Toggle> toggleList = new List<Toggle>();
// 当前选中的项目
private int nowSelectToggleIndex = 0;
private Toggle nowSelectToggle = null;
private int _nowSelectToggleIndex = -1;
public Transform TogglesContext => ToggleGroup.transform;
/// <summary>
/// 当前选中的toggle索引
/// 当前选中的toggle索引,依赖缓存,对于绕过该容器的单选项控制行为可能存在追踪不准确的问题。
/// </summary>
public int NowSelectToggleIndex => nowSelectToggleIndex;
public int NowSelectToggleIndex => _nowSelectToggleIndex;
/// <summary>
/// 当前激活的toggle索引,直接进行查找而不是依赖当前缓存
/// </summary>
public int CurrentSelectToggleIndex
{
get
{
for (var i = 0; i < toggleList.Count; i++)
{
if (!toggleList[i].isOn) continue;
_nowSelectToggleIndex = i;
return _nowSelectToggleIndex;
}
return -1;
}
}
/// <summary>
/// 当前选中的toggle
/// </summary>
public Toggle NowSelectToggle => nowSelectToggle;
public Toggle NowSelectToggle => toggleList[_nowSelectToggleIndex];
#endregion
#region
/// <summary>
/// 获取并给列表排序(顺序不一定与拼音有关)
@@ -196,7 +215,7 @@ namespace XericLibrary.Runtime.MacroLibrary
}
#endregion
#region
/// <summary>
@@ -219,7 +238,7 @@ namespace XericLibrary.Runtime.MacroLibrary
#endregion
#region
#region
/// <summary>
/// 初始化
@@ -230,11 +249,10 @@ namespace XericLibrary.Runtime.MacroLibrary
/// </summary>
public void Initialize()
{
// 未指定组时,说明压根没用这部分功能,用不着初始化。
if (ToggleGroup == null)
// 啥也没有,压根没用这部分功能,用不着初始化。
if (ToggleGroup == null && toggleList.Count <= 0)
return;
// 防呆警告
// 防呆
if (toggleList.Count <= 0)
{
var toggles = ToggleGroup.GetToggles();
@@ -243,24 +261,39 @@ namespace XericLibrary.Runtime.MacroLibrary
toggleList = toggles;
Debug.LogWarning($"在初始化单选项组时,{ToggleGroup.name}并未预先指定索引顺序,将默认使用大纲顺序。");
}
}
if (toggles.Count <= 0)
{
Debug.LogWarning("在初始化单选项组时,目标单选项组为空");
return;
}
}
// 防傻
if (ToggleGroup == null)
ToggleGroup = toggleList[0].group;
if (ToggleGroup == null)
{
ToggleGroup = toggleList[0].gameObject.AddComponent<ToggleGroup>();
foreach (var toggle in toggleList)
toggle.group = ToggleGroup;
}
// 防空
toggleList = toggleList.Where(a => a != null).ToList();
// 事件初始化
for (int i = 0; i < toggleList.Count; i++)
for (var i = 0; i < toggleList.Count; i++)
{
var toggle = toggleList[i];
ToggleAddEvent(toggle);
if (toggle.isOn)
{
nowSelectToggleIndex = i;
nowSelectToggle = toggle;
}
if (_nowSelectToggleIndex < 0 && toggle.isOn)
_nowSelectToggleIndex = i;
}
if (nowSelectToggle == null)
SetToggleOn(0);
// 如果不允许为空的情况下还为空,那就默认标记一个
if (!ToggleGroup.allowSwitchOff && _nowSelectToggleIndex < 0)
SetToggleOnWithoutNotify(0);
}
/// <summary>
@@ -312,7 +345,10 @@ namespace XericLibrary.Runtime.MacroLibrary
toggleList.Clear();
}
#endregion
#region
/// <summary>
/// toggle注册的事件,只有当按下时才需要调用此事件。
/// </summary>
@@ -331,10 +367,9 @@ namespace XericLibrary.Runtime.MacroLibrary
/// <param name="t"></param>
private void ToggleRegister(Toggle t)
{
nowSelectToggle = t;
nowSelectToggleIndex = GetIndex(t);
_nowSelectToggleIndex = GetIndex(t);
OnAnyToggleSwitchOn?.Invoke(t);
OnAnyToggleIndexSwitchOn?.Invoke(nowSelectToggleIndex);
OnAnyToggleIndexSwitchOn?.Invoke(_nowSelectToggleIndex);
}
@@ -345,7 +380,16 @@ namespace XericLibrary.Runtime.MacroLibrary
/// <returns>如果这个toggle不存在于当前的单选项组中,返回-1</returns>
public int GetIndex(Toggle target)
{
return toggleList.IndexOf(target);
if (target == null)
{
Debug.LogError("无法查询空toggle的索引");
return 0;
}
var index = toggleList.IndexOf(target);
if (index >= 0)
return index;
Debug.LogError($"无法查询 {target.name} 在当前单选项组中的索引。");
return 0;
}
/// <summary>
@@ -360,12 +404,14 @@ namespace XericLibrary.Runtime.MacroLibrary
return index >= 0;
}
/// <summary>
/// 设置单选项激活
/// </summary>
/// <param name="target"></param>
public void SetToggleOn(Toggle target)
{
_nowSelectToggleIndex = GetIndex(target);
target.isOn = true;
}
@@ -387,6 +433,7 @@ namespace XericLibrary.Runtime.MacroLibrary
/// <param name="target"></param>
public void SetToggleOnWithoutNotify(Toggle target)
{
_nowSelectToggleIndex = GetIndex(target);
target.SetIsOnWithoutNotify(true);
}
@@ -415,15 +462,21 @@ namespace XericLibrary.Runtime.MacroLibrary
/// <summary>
/// 清除映射结构,并销毁所有toggle组件
/// </summary>
public void RemoveAllToggle()
public void DestroyAllToggle()
{
for (int i = toggleList.Count - 1; i >= 0; i--)
{
Object.Destroy(toggleList[i]);
}
Clear();
}
/// <summary>
/// 清除映射结构,并销毁所有toggle组件
/// </summary>
[Obsolete("方法命名不规范,改为使用DestroyAllToggle")]
public void RemoveAllToggle()
=> DestroyAllToggle();
#endregion
}
Binary file not shown.
+659 -137
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "com.lrss3.deconstruction",
"displayName": "Xeric Library(WebGL)",
"version": "0.5.1",
"version": "0.5.2",
"unity": "2021.3",
"description": "\u8fd9\u662f\u4e00\u4e2a\u89c4\u8303\u57fa\u7840\u7528\u4f8b\u7684\u6269\u5c55\u5e93, \u4e3b\u8981\u63d0\u4f9b\u4ee5\u4e0b\u529f\u80fd\r\n\r\n\u25aa\u7f16\u7a0b\u652f\u6301\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\u3002\r\n\u8fd8\u6709\u591a\u79cd\u7279\u6b8a\u7c7b\u578b, \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\r\n\u25aa\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\u25aa\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\u25aa\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\u25aa\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\u25aa\u5b89\u88c5Digital Twin Tool\u4ee5\u83b7\u53d6\u5e38\u7528\u8c03\u8bd5\u5de5\u5177\u96c6\u3002\r\n\u25aa\u5b89\u88c5Nexus Frame Flow\u4ee5\u83b7\u53d6\u5de5\u4f5c\u67b6\u6784\u5904\u7406\u529f\u80fd\u3002\r\n\u25aa\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",
"keywords": [