lvjincheng 3 лет назад
Родитель
Сommit
55e293be30

+ 1 - 1
Assets/BowArrow/Scripts/Expand/SB_EventSystem.cs

@@ -34,7 +34,7 @@ public class SB_EventSystem : MonoBehaviour
     }
 
     [SerializeField] MouseConfirm mouseConfirm;
-    [SerializeField] SimulateMouse simulateMouse;
+    [SerializeField] public SimulateMouse simulateMouse;
 
     #region  客户要求鼠标点到按钮时,按钮高亮
         Color pointerHoverColor = new Color(233f/255, 233f/255, 233f/255, 128f/255);

+ 1 - 12
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/CircleRayCastChecker.cs

@@ -7,23 +7,12 @@ using UnityEngine.EventSystems;
 public class CircleRayCastChecker : MonoBehaviour, ICanvasRaycastFilter
 {
     public float radius;
-    int _isMouseHover = 0;
-    public bool isMouseHover { get { return _isMouseHover > 0; }}
 
     public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
     {
         RectTransformUtility.ScreenPointToLocalPointInRectangle(transform as RectTransform, sp, eventCamera,
             out Vector2 localPos);
         float dis = Vector3.Distance(localPos, Vector3.zero);
-        if (dis <= radius) {
-            _isMouseHover = 2;
-            return true;
-        }
-        return false;
-    }
-
-    void Update()
-    {
-        if (_isMouseHover > 0) _isMouseHover--;
+        return dis <= radius;
     }
 }

+ 8 - 5
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/MouseConfirm.cs

@@ -26,6 +26,14 @@ public class MouseConfirm : MonoBehaviour
 
     void Update()
     {
+        if (!SB_EventSystem.ins.simulateMouseIsAwaked) {
+            Hide();
+            return;
+        }
+        if (!SB_EventSystem.ins.simulateMouse.GetCurrentSelectable()) {
+            Hide();
+            return;
+        }
         if (_targetSelectable) {
             if (!_prepared) {
                 _prepared = true;
@@ -34,7 +42,6 @@ public class MouseConfirm : MonoBehaviour
                 GetComponent<Canvas>().sortingOrder = _targetSelectable.GetComponentInParent<Canvas>().sortingOrder + 1;
             }
         }
-        if (!SB_EventSystem.ins.simulateMouseIsAwaked) Hide();
     }
 
     void Show() {
@@ -66,13 +73,9 @@ public class MouseConfirm : MonoBehaviour
     }
 
     public void SetSelectable(Selectable selectable) {
-        Debug.Log(1);
         if (!selectable) return;
-        Debug.Log(2);
         if (selectable == _targetSelectable) return;
-        Debug.Log(3);
         if (selectable == _selfSelectable) return;
-        Debug.Log(4);
         _targetSelectable = selectable;
         Show();
     }

+ 4 - 1
Assets/JC/Untiy/SimulateMouse/SimulateMouse.cs

@@ -104,11 +104,14 @@ namespace JC.Unity {
             public void MakeMouseToScreenCenter() {
                 mousePointer.anchoredPosition = new Vector2(GetScaleScreenWidth()/2,GetScaleScreenHeight()/2);
             }
+            public Selectable GetCurrentSelectable() {
+                return mScreenRayRaycasterUIWrapper.m_currentSelectable;
+            }
         #endregion 对外提供的接口
 	}
 	public class ScreenRayRaycasterUIWrapper 
 	{
-        Selectable m_currentSelectable = null;
+        public Selectable m_currentSelectable = null;
         RaycastResult m_currentRaycastResult;
  
         IPointerClickHandler m_clickHandler;