Эх сурвалжийг харах

引导时目标点击检测,引导归位按钮位置被点击才会跳到下一步

lvjincheng 3 жил өмнө
parent
commit
487d3561c1

+ 5 - 0
Assets/BowArrow/Modules/NewUserGuider/HollowOutMask.cs

@@ -26,6 +26,11 @@ public class HollowOutMask : MaskableGraphic, ICanvasRaycastFilter
         _target = target;
         _RefreshView();
     }
+
+    public RectTransform GetTarget()
+    {
+        return _target;
+    }
     
     private void _SetTarget(Vector3 tarMin, Vector3 tarMax)
     {

+ 16 - 5
Assets/BowArrow/Modules/NewUserGuider/NewUserGuider.cs

@@ -114,11 +114,7 @@ public class NewUserGuider : MonoBehaviour
         frameTip.GetComponentInChildren<Text>().text = config.frameTipText;
         frameTip.gameObject.SetActive(true);
 
-        GetMaskClickedEvent().AddListener(() => {
-            if (clickedWillPlayAudioBtn) AudioMgr.ins?.PlayBtn();
-            Destroy(gameObject);
-            NewUserGuiderManager.ins?.OnClickedDestroyed(config.key);
-        });
+        GetMaskClickedEvent().AddListener(OnClick_ToNext);
 
         config.onStart?.Invoke(this);
     }
@@ -130,11 +126,26 @@ public class NewUserGuider : MonoBehaviour
         NewUserGuiderManager.ins.OnSkip();
     }
 
+    public void OnClick_ToNext()
+    {
+        if (clickedWillPlayAudioBtn) AudioMgr.ins?.PlayBtn();
+        Destroy(gameObject);
+        NewUserGuiderManager.ins?.OnClickedDestroyed(config.key);
+    }
+
     public Button.ButtonClickedEvent GetMaskClickedEvent()
     {
         return hollowOutMask.GetComponent<Button>().onClick;
     }
 
+    NewUserGuiderButton _newUserGuiderButton;
+    public NewUserGuiderButton GetNewUserGuiderButton() {
+        if (_newUserGuiderButton == null) {
+            _newUserGuiderButton = hollowOutMask.gameObject.AddComponent<NewUserGuiderButton>();
+        }
+        return _newUserGuiderButton;
+    }
+
     public void SetIconPointerHitOpacity(float opacity) 
     {
         Image img = iconPointerHit.GetComponent<Image>();

+ 19 - 0
Assets/BowArrow/Modules/NewUserGuider/NewUserGuiderButton.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.EventSystems;
+
+public class NewUserGuiderButton : MonoBehaviour, IPointerUpHandler
+{
+    public Action onClick;
+
+    public void OnPointerUp(PointerEventData eventData) {
+        RectTransform target = GetComponent<HollowOutMask>().GetTarget();
+        bool hit = RectTransformUtility.RectangleContainsScreenPoint(target, eventData.position);
+        if (hit) {
+            onClick.Invoke();
+        }
+    }
+}

+ 11 - 0
Assets/BowArrow/Modules/NewUserGuider/NewUserGuiderButton.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 818285acec80e644b9ccf86ad6d7f407
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 4 - 0
Assets/BowArrow/Modules/NewUserGuider/NewUserGuiderManager.cs

@@ -149,6 +149,10 @@ public class NewUserGuiderManager : MonoBehaviour
                 g.action_OnDestroy += () => gameMode.ResumeTimeCounting(g);
             }
         };
+        config.onStart = (g) => {
+            g.GetMaskClickedEvent().RemoveAllListeners();
+            g.GetNewUserGuiderButton().onClick += g.OnClick_ToNext;
+        };
         configs.Add("视角归位-触发", config);