diff --git a/Runtime/FlipPage/FlipPageComponentManager.cs b/Runtime/FlipPage/FlipPageComponentManager.cs
index 9e24dee..b3e05cd 100644
--- a/Runtime/FlipPage/FlipPageComponentManager.cs
+++ b/Runtime/FlipPage/FlipPageComponentManager.cs
@@ -14,10 +14,20 @@ using Component = UnityEngine.Component;
namespace XericUI.FlipPage
{
///
- /// 翻页组件管�器
- ///
- /// 对翻页组件的管�
+ /// 翻页组件管�器(UI层)
///
+ ///
+ /// 翻页组件层(UI)脚本,约�基本用法:
+ ///
+ /// FlipPageComponentManager : XericFlipPageIndexVesselBase
+ /// |-PageComponentInfo 页�组件结构
+ /// | |-ItemComponentInfo 项目组件结构
+ ///
+ /// 组件层使用组件容器å°�装,预设的组件引用å�¯ä»¥å®žçŽ°ç±»ä¼¼ä¸‹é�¢çš„æ ·å¼�
+ /// |< < 2,3,4 > >|
+ /// 两侧是固定的按钮,ä¸é—´æ˜¯ä¸€ä¸ªæ¨ªå�‘çš„æŽ’åˆ—å®¹å™¨ï¼Œåœ¨æŒ‡å®šäº†æŒ‰é’®å¯¹è±¡æ± å�Žï¼Œå°†ä¼šè‡ªåŠ¨ç”Ÿæˆ�绑定好的按钮用于翻页。
+ /// 页数按钮需è¦�让button在预制体最外层,它的å�集ä¸éœ€è¦�包å�«ä¸€ä¸ªTMP_Text。
+ ///
public class FlipPageComponentManager : XericFlipPageIndexVesselBase
{
#region 界�属性
diff --git a/Runtime/FlipPage/XericFlipPageIndexVesselBase.cs b/Runtime/FlipPage/XericFlipPageIndexVesselBase.cs
index 03e1cbe..ca7b03c 100644
--- a/Runtime/FlipPage/XericFlipPageIndexVesselBase.cs
+++ b/Runtime/FlipPage/XericFlipPageIndexVesselBase.cs
@@ -12,10 +12,22 @@ using XericUI.Core.Vessel;
namespace XericUI.FlipPage
{
///
- /// ·Ò³¹ÜÀíÆ÷
+ /// ·Ò³¹ÜÀíÆ÷(Âß¼²ã)
///
///
- /// ·Ò³ÔÊÐí°´Ò³£¬°´ÏîÄ¿½øÐйÜÀí¡£
+ /// ·Ò³Âß¼²ã½Å±¾£¬Ô¼Êø»ù±¾Ó÷¨£º
+ ///
+ /// XericFlipPageIndexVesselBase Âß¼²ã¹ÜÀíÆ÷
+ /// |-PageInfo Ò³ÃæÊý¾Ý½á¹¹
+ /// | |-ItemInfo ÏîÄ¿Êý¾Ý½á¹¹
+ ///
+ /// »ù±¾Ó÷¨Ó¦¸ÃÊÇ£¬Ìí¼ÓÊý¾ÝÏîÄ¿£¬Õâ»á×Ô¶¯·ÖÅäµ½ÓÐЧµÄÒ³ÃæÖУ»
+ /// Èç¹ûÒ³ÃæÏîÄ¿ÒÑÂú£¬Ôòн¨Ò»¸öÒ³Ãæ¼ÌÐøÌî³äÏîÄ¿¡£
+ /// »òÕßÖ±½Ó´´½¨Ò³Ã棬½«ÐèÒªµÄÊý¾ÝÏîĿֱ½ÓдÔÚÒ³ÃæÊý¾ÝÖС£
+ ///
+ /// ʹÓÃFlipPage()·Ò³£¬Õâ»áÁ¢¿ÌÖ´ÐУ¬²¢´¥·¢OnFlipPageº¯Êý£¬
+ /// currentPageIndex¿ÉÒÔ»ñÈ¡µ±Ç°Ò³Êý£¬Currentpage»ñÈ¡µ±Ç°Ò³ÃæÊý¾Ý£»
+ /// ÔÚÒ³ÃæÊý¾ÝÖÐpageNumber¿ÉÒÔ»ñÈ¡×Ô¼ºËùÔÚµÄÒ³Êý£¬itemInfos»ñÈ¡Ò³ÃæÖеÄËùÓÐÊý¾ÝÏîÄ¿¡£
///
public class XericFlipPageIndexVesselBase : XericUIBehaciour
{
diff --git a/Runtime/Helper.meta b/Runtime/Helper.meta
new file mode 100644
index 0000000..4c82804
--- /dev/null
+++ b/Runtime/Helper.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d1b1471c80dc411bb9c2745a091dc801
+timeCreated: 1753776687
\ No newline at end of file
diff --git a/Runtime/Helper/EventSystemHelper.cs b/Runtime/Helper/EventSystemHelper.cs
new file mode 100644
index 0000000..2548f8e
--- /dev/null
+++ b/Runtime/Helper/EventSystemHelper.cs
@@ -0,0 +1,110 @@
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.EventSystems;
+using XericLibrary.Runtime.MacroLibrary;
+
+namespace XericUI.Helper
+{
+ ///
+ /// UI输入系统帮助
+ ///
+ public static class EventSystemHelper
+ {
+ #region å—æ®µå±žæ€§
+
+ private static int raycastResultsFrameIndex = -1;
+ public static List raycastResults = new List();
+
+ #endregion
+
+ #region 辅助功能
+
+ ///
+ /// æ ¹æ�®é‡�è½½å�¯é€‰è¦†ç›–返回的事件系统
+ ///
+ ///
+ ///
+ private static EventSystem GetEventSystem(EventSystem overrideEventSystem = null)
+ => overrideEventSystem == null
+ ? EventSystem.current
+ : overrideEventSystem;
+
+ ///
+ /// 当å‰�是å�¦æ¥è¿›å¸§
+ ///
+ ///
+ /// ��状�
+ ///
+ private static bool IsFrameIndexChange(ref int frameIndex, bool holdon = false)
+ {
+ if (frameIndex == Time.frameCount)
+ return false;
+ if (holdon)
+ return true;
+ frameIndex = Time.frameCount;
+ return true;
+ }
+
+ #endregion
+
+ #region å…‰æ ‡åœ¨å…¶ä¸Š
+
+ ///
+ /// 判æ–当å‰�å…‰æ ‡æ˜¯å�¦å¤„于任æ„�UI对象上
+ ///
+ ///
+ ///
+ public static bool IsPointerOverGameObject(EventSystem overrideEventSystem = null)
+ {
+ overrideEventSystem = GetEventSystem(overrideEventSystem);
+ return overrideEventSystem.IsPointerOverGameObject();
+ }
+
+ ///
+ /// 自动更新射线监测
+ ///
+ ///
+ ///
+ public static List GetRaycastAllResults(EventSystem overrideEventSystem = null)
+ {
+ if (!IsFrameIndexChange(ref raycastResultsFrameIndex))
+ return raycastResults;
+
+ overrideEventSystem = GetEventSystem(overrideEventSystem);
+ var pointerData = new PointerEventData(overrideEventSystem)
+ {
+ position = Input.mousePosition
+ };
+ overrideEventSystem.RaycastAll(pointerData, raycastResults);
+ return raycastResults;
+ }
+
+ ///
+ /// 判æ–当å‰�å…‰æ ‡æ˜¯å�¦å¤„于特定组件上
+ ///
+ /// 返回找到的组件
+ /// 是å�¦å�¯ç”¨å…¼å®¹æ€§ï¼Œå½“在所有击ä¸çš„å…ƒç´ ä¸Šæ‰¾ä¸�åˆ°ç›®æ ‡æ—¶ï¼Œç»§ç»å�‘上查找
+ ///
+ ///
+ ///
+ public static bool IsPointerOverUIWithComponent(out T component, bool compatibility = true, EventSystem overrideEventSystem = null)
+ where T : Component
+ {
+ var results = GetRaycastAllResults(overrideEventSystem);
+ if (results.Count <= 0)
+ {
+ component = null;
+ return false;
+ }
+ component = results
+ .Select(a => a.gameObject.GetComponent())
+ .FirstOrDefault(a => a != null);
+ if (compatibility && component == null)
+ component = results[^1].gameObject.GetComponentInParent();
+ return component != null;
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Runtime/Helper/EventSystemHelper.cs.meta b/Runtime/Helper/EventSystemHelper.cs.meta
new file mode 100644
index 0000000..a9e1eae
--- /dev/null
+++ b/Runtime/Helper/EventSystemHelper.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d2386c74c7b74a18b9656a435572352d
+timeCreated: 1753776710
\ No newline at end of file