同步更新

This commit is contained in:
2025-06-09 09:10:06 +08:00
parent 0ead362241
commit f0235e6d18
6 changed files with 72 additions and 62 deletions
+2 -2
View File
@@ -2,8 +2,8 @@
"name": "Lrss3.SesothoLine.Editor", "name": "Lrss3.SesothoLine.Editor",
"rootNamespace": "SesothoLineEditor", "rootNamespace": "SesothoLineEditor",
"references": [ "references": [
"Lrss3.Deconstruction", "Lrss3.SesothoLine",
"UnityEditor.UI" "Lrss3.Deconstruction"
], ],
"includePlatforms": [ "includePlatforms": [
"Editor" "Editor"
Binary file not shown.
Binary file not shown.
Binary file not shown.
+32 -22
View File
@@ -3,19 +3,22 @@ using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.Events; using UnityEngine.Events;
using UnityEngine.UI; using UnityEngine.UI;
using XericLibrary.Runtime.CustomEditor; using XericLibrary.Runtime.CustomEditor;
using Object = UnityEngine.Object;
#if ODIN_INSPECTOR
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
#if UNITY_EDITOR #endif
#if UNITY_EDITOR && ODIN_INSPECTOR
using Sirenix.Utilities.Editor; using Sirenix.Utilities.Editor;
#endif #endif
using Object = UnityEngine.Object;
namespace XericLibrary.Runtime.MacroLibrary namespace XericLibrary.Runtime.MacroLibrary
{ {
/// <summary> /// <summary>
@@ -25,7 +28,8 @@ namespace XericLibrary.Runtime.MacroLibrary
{ {
#region toggle 扩展 #region toggle 扩展
private static FieldInfo togglesFieldInfo = typeof(ToggleGroup).GetField("m_Toggles", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); private static FieldInfo togglesFieldInfo = typeof(ToggleGroup).GetField("m_Toggles",
BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
public static List<Toggle> GetToggles(this ToggleGroup toggleGroup) public static List<Toggle> GetToggles(this ToggleGroup toggleGroup)
{ {
@@ -79,7 +83,6 @@ namespace XericLibrary.Runtime.MacroLibrary
} }
/// <summary> /// <summary>
/// 在单选项组上注册一个事件,当组中的任意成员变成激活状态时调用(其他的不会发生调用)。 /// 在单选项组上注册一个事件,当组中的任意成员变成激活状态时调用(其他的不会发生调用)。
/// </summary> /// </summary>
@@ -96,6 +99,7 @@ namespace XericLibrary.Runtime.MacroLibrary
}); });
} }
} }
/// <summary> /// <summary>
/// 清空单选项组中的所有事件(与注册所有事件对应,但那个事件没法单独注销) /// 清空单选项组中的所有事件(与注册所有事件对应,但那个事件没法单独注销)
/// </summary> /// </summary>
@@ -134,11 +138,13 @@ namespace XericLibrary.Runtime.MacroLibrary
#endregion #endregion
#region 字段属性 #region 字段属性
#if ODIN_INSPECTOR
[LabelText("单选组")] public ToggleGroup ToggleGroup; [LabelText("单选组")]
#endif
[SerializeField, LabelText("编辑单选项目顺序")] public ToggleGroup ToggleGroup;
[ListDrawerSettings(OnTitleBarGUI = "GetAndSortToggle")] #if ODIN_INSPECTOR
[SerializeField, LabelText("编辑单选项目顺序")] [ListDrawerSettings(OnTitleBarGUI = "GetAndSortToggle")]
#endif
private List<Toggle> toggleList = new List<Toggle>(); private List<Toggle> toggleList = new List<Toggle>();
// 当前选中的项目 // 当前选中的项目
@@ -164,15 +170,11 @@ namespace XericLibrary.Runtime.MacroLibrary
/// </summary> /// </summary>
public void GetAndSortToggle() public void GetAndSortToggle()
{ {
#if UNITY_EDITOR #if UNITY_EDITOR && ODIN_INSPECTOR
// 自动获取并排序 // 自动获取并排序
if (SirenixEditorGUI.ToolbarButton(EditorIcons.Refresh)) if (SirenixEditorGUI.ToolbarButton(EditorIcons.Refresh))
{ {
var newToggleList = MacroSort.FullCharacterOrderSort(ToggleGroup.GetToggles(), a => a.name).ToList(); GetSortToggle();
if (newToggleList.Count <= 0 || newToggleList == null)
Debug.LogError("如果无法更新获取自动排序toggle,可能是因为toggleGroup被隐藏了,手动将其激活后再获取即可。");
else
toggleList = newToggleList;
} }
// 反转顺序 // 反转顺序
if (SirenixEditorGUI.ToolbarButton(EditorIcons.TriangleDown)) if (SirenixEditorGUI.ToolbarButton(EditorIcons.TriangleDown))
@@ -180,12 +182,17 @@ namespace XericLibrary.Runtime.MacroLibrary
toggleList.Reverse(); toggleList.Reverse();
} }
#else #else
var newToggleList = MacroSort.FullCharacterOrderSort(ToggleGroup.GetToggles(), a => a.name).ToList(); GetSortToggle();
#endif
void GetSortToggle()
{
var newToggleList = MacroSort.FullCharacterOrderSort(ToggleGroup.GetToggles(), a => a.name)
.ToList();
if (newToggleList.Count <= 0 || newToggleList == null) if (newToggleList.Count <= 0 || newToggleList == null)
Debug.LogError("如果无法更新获取自动排序toggle,可能是因为toggleGroup被隐藏了,手动将其激活后再获取即可。"); Debug.LogError("如果无法更新获取自动排序toggle,可能是因为toggleGroup被隐藏了,手动将其激活后再获取即可。");
else else
toggleList = newToggleList; toggleList = newToggleList;
#endif }
} }
#endregion #endregion
@@ -237,6 +244,7 @@ namespace XericLibrary.Runtime.MacroLibrary
Debug.LogWarning($"在初始化单选项组时,{ToggleGroup.name}并未预先指定索引顺序,将默认使用大纲顺序。"); Debug.LogWarning($"在初始化单选项组时,{ToggleGroup.name}并未预先指定索引顺序,将默认使用大纲顺序。");
} }
} }
// 事件初始化 // 事件初始化
for (int i = 0; i < toggleList.Count; i++) for (int i = 0; i < toggleList.Count; i++)
{ {
@@ -300,11 +308,11 @@ namespace XericLibrary.Runtime.MacroLibrary
if (allowDestroy) if (allowDestroy)
Object.Destroy(t); Object.Destroy(t);
} }
toggleList.Clear(); toggleList.Clear();
} }
/// <summary> /// <summary>
/// toggle注册的事件,只有当按下时才需要调用此事件。 /// toggle注册的事件,只有当按下时才需要调用此事件。
/// </summary> /// </summary>
@@ -330,7 +338,6 @@ namespace XericLibrary.Runtime.MacroLibrary
} }
/// <summary> /// <summary>
/// 获取toggle代表的索引 /// 获取toggle代表的索引
/// </summary> /// </summary>
@@ -361,6 +368,7 @@ namespace XericLibrary.Runtime.MacroLibrary
{ {
target.isOn = true; target.isOn = true;
} }
/// <summary> /// <summary>
/// 设置单选项激活 /// 设置单选项激活
/// </summary> /// </summary>
@@ -372,6 +380,7 @@ namespace XericLibrary.Runtime.MacroLibrary
SetToggleOn(toggleList[index]); SetToggleOn(toggleList[index]);
} }
} }
/// <summary> /// <summary>
/// 设置单选项激活 /// 设置单选项激活
/// </summary> /// </summary>
@@ -380,6 +389,7 @@ namespace XericLibrary.Runtime.MacroLibrary
{ {
target.SetIsOnWithoutNotify(true); target.SetIsOnWithoutNotify(true);
} }
/// <summary> /// <summary>
/// 设置单选项激活 /// 设置单选项激活
/// </summary> /// </summary>
@@ -411,11 +421,11 @@ namespace XericLibrary.Runtime.MacroLibrary
{ {
Object.Destroy(toggleList[i]); Object.Destroy(toggleList[i]);
} }
Clear(); Clear();
} }
#endregion #endregion
} }
#endregion #endregion
@@ -486,7 +496,7 @@ namespace XericLibrary.Runtime.MacroLibrary
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
/// <returns></returns> /// <returns></returns>
public static RectTransform RectTransform<T>(this T target) public static RectTransform RectTransform<T>(this T target)
where T : Component where T : Component
=> target.transform as RectTransform; => target.transform as RectTransform;
#endregion #endregion
Binary file not shown.