diff --git a/Runtime/Lrss3.Deconstruction.asmdef b/Runtime/Lrss3.Deconstruction.asmdef
index 2c7c2e8..60f5425 100644
--- a/Runtime/Lrss3.Deconstruction.asmdef
+++ b/Runtime/Lrss3.Deconstruction.asmdef
@@ -2,8 +2,7 @@
"name": "Lrss3.Deconstruction",
"rootNamespace": "Deconstruction",
"references": [
- "GUID:6055be8ebefd69e48b49212b09b47b2f",
- "GUID:343deaaf83e0cee4ca978e7df0b80d21"
+ "GUID:6055be8ebefd69e48b49212b09b47b2f"
],
"includePlatforms": [],
"excludePlatforms": [],
diff --git a/Runtime/StructType/GowSoftRef.cs b/Runtime/StructType/GowSoftRef.cs
index 975d786..dcd11e9 100644
--- a/Runtime/StructType/GowSoftRef.cs
+++ b/Runtime/StructType/GowSoftRef.cs
@@ -3,7 +3,9 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+#if ODIN_INSPECTOR
using Sirenix.OdinInspector;
+#endif
using UnityEngine;
using XericLibrary.Runtime.MacroLibrary;
using Object = UnityEngine.Object;
@@ -26,15 +28,19 @@ namespace XericLibrary.Runtime.Type.Base
///
/// 对象
///
+#if ODIN_INSPECTOR
[HorizontalGroup("SoftRef")]
[HideLabel]
+#endif
public GameObject targetObejct;
///
/// 路径
///
+#if ODIN_INSPECTOR
[HorizontalGroup("SoftRef")]
[HideLabel]
+#endif
public string targetPath;
///
diff --git a/Runtime/UI/TmpText.meta b/Runtime/UI/TmpText.meta
index 6ec62ab..e3c9bfd 100644
--- a/Runtime/UI/TmpText.meta
+++ b/Runtime/UI/TmpText.meta
@@ -1,5 +1,9 @@
fileFormatVersion: 2
+<<<<<<<< HEAD:Release/Samples~/ConfigUIElement.meta
+guid: 7758a0679c9038144a4b0d007d44618f
+========
guid: 85f1b523843f5884bb9f6b47500bccd0
+>>>>>>>> gitea-Srouce/master:Release/Runtime/UI/TmpText.meta
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Runtime/UI/TmpText/TMPHyperlinkManager.cs b/Runtime/UI/TmpText/TMPHyperlinkManager.cs
index b9184b1..4a2aa69 100644
--- a/Runtime/UI/TmpText/TMPHyperlinkManager.cs
+++ b/Runtime/UI/TmpText/TMPHyperlinkManager.cs
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
using Sirenix.OdinInspector;
using TMPro;
using UnityEngine;
@@ -8,7 +10,7 @@ using XericLibrary.Runtime.MacroLibrary;
using XericLibrary.Runtime.Type;
namespace Deconstruction.UI.TmpText
-{
+{
///
/// TMP超链接点击管理组件
///
@@ -21,19 +23,22 @@ namespace Deconstruction.UI.TmpText
[LabelText("画布*")]
#endif
[Tooltip("组件可为空,将自动向上查找")]
- [SerializeField] public Canvas canvas;
+ [SerializeField]
+ public Canvas canvas;
#if ODIN_INSPECTOR
[LabelText("点击超链接时回调")]
#endif
[SerializeField]
private UnityEvent _onClickLink;
+
public Action onClickLink;
-
+
///
/// 当前摄像机
///
- private Camera _camera;
+ private Camera _camera;
+
///
/// 存储链接ID与对应回调函数的映射
///
@@ -48,13 +53,11 @@ namespace Deconstruction.UI.TmpText
Debug.LogError("TMP文本对象必须在Canvas下才能使用超链接功能");
return;
}
-
+
if (canvas.renderMode == RenderMode.ScreenSpaceOverlay)
_camera = null;
else
_camera = canvas.worldCamera;
-
-
}
///
@@ -72,7 +75,7 @@ namespace Deconstruction.UI.TmpText
_linkCallbacks.Add(linkID, callback);
}
}
-
+
///
/// 注销链接回调函数
///
@@ -83,7 +86,7 @@ namespace Deconstruction.UI.TmpText
_linkCallbacks.Remove(linkID);
}
}
-
+
///
/// 处理链接点击事件
///
@@ -100,7 +103,7 @@ namespace Deconstruction.UI.TmpText
}
}
-
+
///
/// 检查坐标下的超链接索引
///
@@ -111,6 +114,7 @@ namespace Deconstruction.UI.TmpText
{
return TMP_TextUtilities.FindIntersectingLink(text, position, _camera);
}
+
///
/// 检查坐标下的超链接id信息
///
@@ -126,9 +130,11 @@ namespace Deconstruction.UI.TmpText
linkInfo = text.textInfo.linkInfo[index];
return true;
}
+
linkInfo = default;
return false;
}
+
///
/// 检查坐标下的超链接id
///
@@ -143,6 +149,7 @@ namespace Deconstruction.UI.TmpText
linkID = info.GetLinkID();
return true;
}
+
linkID = string.Empty;
return false;
}
@@ -158,7 +165,88 @@ namespace Deconstruction.UI.TmpText
Debug.Log($"click link{linkID}");
// 这里不需要处理报错,应当由发送消息的成员处理
}
-
+
// todo 主动查找所有的tmp组件,或是等组件唤醒后区管理它们,用来获得所有的带有标记的超链接组件
+
+ ///
+ /// 主动查找所有具有link属性的tmp组件
+ ///
+ /// 自动查找
+ ///
+ public void FindAllID(bool requirementComponent = true, bool forceRefesh = false)
+ {
+ transform.GetChildrenBFS().GetComponentsOTON();
+ }
+
+ private List _tempGetChildrenHyperlink = null;
+
+ ///
+ /// 获取所有链接子项
+ ///
+ /// 强制刷新,如果刷新过一次,之后不论设定如何都将直接从缓存中返回对象,置位将跳过这个缓存
+ /// 包括重复标记(也就是是否包含另一个超链接管理器作用域下的超链接对象)
+ public List GetChildrenHyperlink(bool forceRefesh = false,
+ bool includeRepeatedMarking = false)
+ {
+ if (!forceRefesh && _tempGetChildrenHyperlink != null && _tempGetChildrenHyperlink.Count > 0)
+ return _tempGetChildrenHyperlink;
+
+ _tempGetChildrenHyperlink = transform.GetChildrenBFS()
+ .GetComponentsOTON().ToList();
+
+ return _tempGetChildrenHyperlink;
+ }
+
+ private List _tempGetChildrenTmpText2Hyperlink = null;
+
+ ///
+ /// 获取所有tmp_text,然后根据规则返回链接
+ ///
+ /// 强制刷新,如果刷新过一次,之后不论设定如何都将直接从缓存中返回对象,置位将跳过这个缓存
+ /// 强制给带有link标记的对象加上超链接组件
+ /// 包括重复标记(也就是是否包含另一个超链接管理器作用域下的超链接对象)
+ ///
+ public List GetChildrenTmpText2Hyperlink(
+ bool forceRefesh = false,
+ bool requirementHyperlink = true,
+ bool includeRepeatedMarking = false)
+ {
+ if (!forceRefesh && _tempGetChildrenTmpText2Hyperlink != null && _tempGetChildrenTmpText2Hyperlink.Count > 0)
+ return _tempGetChildrenTmpText2Hyperlink;
+
+ var children = includeRepeatedMarking
+ ? transform.GetChildrenBFS()
+ : transform.GetChildrenBFS();
+
+ var result = new List();
+ var hyperlinkType = typeof(TMPHyperlinkReceiver);
+ var tmpTextType = typeof(TMP_Text);
+
+ // 预先分配足够的容量,减少扩容
+ result.Capacity = Mathf.Min(children.Count(), 10);
+
+ foreach (var child in children)
+ {
+ // 尝试从缓存获取组件
+ var hyperlink = child.GetComponent(hyperlinkType) as TMPHyperlinkReceiver;
+ if (hyperlink != null)
+ {
+ result.Add(hyperlink);
+ continue;
+ }
+
+ if (!requirementHyperlink)
+ continue;
+
+ // 尝试获取TMP_Text组件
+ var tmp = child.GetComponent(tmpTextType) as TMP_Text;
+ if (tmp != null && tmp.text.MatchRichTextID())
+ {
+ result.Add(child.gameObject.AddComponent());
+ }
+ }
+
+ return result;
+ }
}
}
\ No newline at end of file
diff --git a/Runtime/XericLibrary.dll b/Runtime/XericLibrary.dll
index 4181277..fd1add8 100644
Binary files a/Runtime/XericLibrary.dll and b/Runtime/XericLibrary.dll differ
diff --git a/Runtime/hideSponsor.meta b/Runtime/hideSponsor.meta
deleted file mode 100644
index 3628ded..0000000
--- a/Runtime/hideSponsor.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 60899d22c437ddd40ba15778659bbab9
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant: