Bladeren bron

鼠标确认

lvjincheng 3 jaren geleden
bovenliggende
commit
d75f2618b7

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

@@ -29,15 +29,18 @@ public class SB_EventSystem : MonoBehaviour
     }
 
     void Update() {
+        // mouseTest.Update();
         UpdateMoveSimulateMouse();
     }
-    
+
+    [SerializeField] MouseConfirm mouseConfirm;
     [SerializeField] SimulateMouse simulateMouse;
 
     #region  客户要求鼠标点到按钮时,按钮高亮
         Color pointerHoverColor = new Color(233f/255, 233f/255, 233f/255, 128f/255);
         void InitListenerForMouseHoverHightColor() {
             simulateMouse.OnPointerEnter += (Selectable target) => {
+                mouseConfirm.SetSelectable(target);
                 Button btn = target.GetComponent<Button>();
                 if (!btn) return;
                 if (btn.transition != Selectable.Transition.ColorTint) return;
@@ -100,6 +103,34 @@ public class SB_EventSystem : MonoBehaviour
         if (isCooling) return;
         simulateMouse.ClickMousePointer();
     }
+
+    /** 鼠标测试类 */
+    MouseTest mouseTest = new MouseTest();
+    class MouseTest {
+        Quaternion quat = Quaternion.identity;
+        float moveSensitivity = 30;
+        public void Update() {
+            if (Input.GetKey(KeyCode.A)) {
+                quat = Quaternion.AngleAxis(-moveSensitivity * Time.deltaTime, Vector3.up) * quat;
+            }
+            else if (Input.GetKey(KeyCode.D)) {
+                quat = Quaternion.AngleAxis(moveSensitivity * Time.deltaTime, Vector3.up) * quat;
+            }
+            else if (Input.GetKey(KeyCode.W)) {
+                quat = Quaternion.AngleAxis(-moveSensitivity * Time.deltaTime, Vector3.right) * quat;
+            }
+            else if (Input.GetKey(KeyCode.S)) {
+                quat = Quaternion.AngleAxis(moveSensitivity * Time.deltaTime, Vector3.right) * quat;
+            }
+            SB_EventSystem.ins.MoveSimulateMouse(quat);
+            if (Input.GetKeyDown(KeyCode.E)) {
+                SB_EventSystem.ins.AwakenSimulateMouse();
+            }
+            if (Input.GetKeyDown(KeyCode.R)) {
+                SB_EventSystem.ins.ClickMouse();
+            }
+        }
+    }
 }
 /**传统鼠标 */
 // public class SB_EventSystem : MonoBehaviour

+ 8 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 55588aa88b1e44f4cac1bce21d38e373
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 123 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem.prefab

@@ -30,6 +30,7 @@ Transform:
   m_Children:
   - {fileID: 9153529459286837273}
   - {fileID: 4466511099740143219}
+  - {fileID: 6460681503731722814}
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -45,6 +46,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: da1ed5633f17c1d41a560d677659322a, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  mouseConfirm: {fileID: 1927403290695149093}
   simulateMouse: {fileID: 4466511099740143218}
 --- !u!1 &6022902056680718010
 GameObject:
@@ -185,3 +187,124 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 230f31333a554724899153c32f5c2881, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+--- !u!1001 &3813801672593820031
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 8896251417503616548}
+    m_Modifications:
+    - target: {fileID: 1089973789941449029, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_Name
+      value: MouseConfirm
+      objectReference: {fileID: 0}
+    - target: {fileID: 1089973789941449029, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_IsActive
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1406887300890989585, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_SortingOrder
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_Pivot.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_Pivot.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_RootOrder
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_AnchorMax.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_AnchorMax.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_AnchorMin.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_AnchorMin.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_SizeDelta.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_SizeDelta.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_AnchoredPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_AnchoredPosition.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+--- !u!224 &6460681503731722814 stripped
+RectTransform:
+  m_CorrespondingSourceObject: {fileID: 7873888582726017857, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+  m_PrefabInstance: {fileID: 3813801672593820031}
+  m_PrefabAsset: {fileID: 0}
+--- !u!114 &1927403290695149093 stripped
+MonoBehaviour:
+  m_CorrespondingSourceObject: {fileID: 3337971612114972506, guid: 0694ea385f0d805479f9859bcf8c2f7e, type: 3}
+  m_PrefabInstance: {fileID: 3813801672593820031}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe67bad6e6cfcef45bea5b99bf6dd59b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 

+ 8 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 17766fd249920294b9b47aba8b5d4ddd
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/BtnMouseConfirm.png


+ 120 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/BtnMouseConfirm.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 35cb9ed4c1d9b6b4499f313f7ba15022
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 0
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 29 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/CircleRayCastChecker.cs

@@ -0,0 +1,29 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+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--;
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/CircleRayCastChecker.cs.meta

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

+ 79 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/MouseConfirm.cs

@@ -0,0 +1,79 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+using JC.Unity.UI;
+using JC.Unity;
+
+public class MouseConfirm : MonoBehaviour
+{
+    [SerializeField] Button btnConfirm;
+
+    Selectable _targetSelectable;
+    Selectable _selfSelectable;
+    bool _prepared = false;
+
+    void Awake() {
+        btnConfirm.gameObject.SetActive(false);
+    }
+    
+    void Start()
+    {
+        _selfSelectable = btnConfirm.GetComponent<Selectable>();
+        btnConfirm.onClick.AddListener(OnClikc_Confirm);
+    }
+
+    void Update()
+    {
+        if (_targetSelectable) {
+            if (!_prepared) {
+                _prepared = true;
+                btnConfirm.transform.position = RectTransformUtils.GetPositionByPivot(_targetSelectable.transform as RectTransform, Vector2.one * 0.5f);
+                btnConfirm.gameObject.SetActive(true);
+                GetComponent<Canvas>().sortingOrder = _targetSelectable.GetComponentInParent<Canvas>().sortingOrder + 1;
+            }
+        }
+        if (!SB_EventSystem.ins.simulateMouseIsAwaked) Hide();
+    }
+
+    void Show() {
+        _prepared = false;
+        if (!gameObject.activeSelf) gameObject.SetActive(true);
+    }
+
+    void Hide() {
+        _targetSelectable = null;
+        btnConfirm.gameObject.SetActive(false);
+        if (gameObject.activeSelf) gameObject.SetActive(false);
+    }
+
+    void OnClikc_Confirm()
+    {
+        try
+        {
+            if (_targetSelectable && _targetSelectable.interactable) {
+                Button btn = _targetSelectable.GetComponent<Button>();
+                btn.onClick.Invoke();
+            }
+        }
+        catch (System.Exception e)
+        {
+            Debug.LogError(e.Message);
+            Debug.LogError(e.StackTrace);
+        }
+        Hide();
+    }
+
+    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();
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/MouseConfirm.cs.meta

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

+ 250 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/MouseConfirm.prefab

@@ -0,0 +1,250 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1027170455086060293
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7436955359867182612}
+  - component: {fileID: 7768636925052580736}
+  - component: {fileID: 4964138757173537796}
+  - component: {fileID: 5192797147029930198}
+  - component: {fileID: 5345562233793385585}
+  m_Layer: 0
+  m_Name: BtnConfirm
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7436955359867182612
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1027170455086060293}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7873888582726017857}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 120, y: 120}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &7768636925052580736
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1027170455086060293}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: a2bce9fdac4a1504b93f82dbca753910, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  radius: 60
+--- !u!222 &4964138757173537796
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1027170455086060293}
+  m_CullTransparentMesh: 1
+--- !u!114 &5192797147029930198
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1027170455086060293}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 35cb9ed4c1d9b6b4499f313f7ba15022, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &5345562233793385585
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1027170455086060293}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 5192797147029930198}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!1 &1089973789941449029
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7873888582726017857}
+  - component: {fileID: 1406887300890989585}
+  - component: {fileID: 5216328264538281483}
+  - component: {fileID: 3351332642776757331}
+  - component: {fileID: 3337971612114972506}
+  m_Layer: 0
+  m_Name: MouseConfirm
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7873888582726017857
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1089973789941449029}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0, y: 0, z: 0}
+  m_Children:
+  - {fileID: 7436955359867182612}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0}
+--- !u!223 &1406887300890989585
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1089973789941449029}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 0
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &5216328264538281483
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1089973789941449029}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 1
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 1280, y: 720}
+  m_ScreenMatchMode: 1
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!114 &3351332642776757331
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1089973789941449029}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!114 &3337971612114972506
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1089973789941449029}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe67bad6e6cfcef45bea5b99bf6dd59b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  btnConfirm: {fileID: 5345562233793385585}

+ 7 - 0
Assets/BowArrow/Scripts/Expand/SB_EventSystem/MouseConfirm/MouseConfirm.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0694ea385f0d805479f9859bcf8c2f7e
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 11
Assets/JC/Untiy/SimulateMouse/SimulateMouse.cs

@@ -144,19 +144,16 @@ namespace JC.Unity {
             
             if (raycastResults.Count > 0)
             {
-                foreach (var result in raycastResults)
+                var result = raycastResults[0]; //只检测第一个
+                var newSelectable = result.gameObject.GetComponentInParent<Selectable>();
+
+                if (newSelectable)
                 {
-                    var newSelectable = result.gameObject.GetComponentInParent<Selectable>();
- 
-                    if (newSelectable)
+                    hasRaycastSelectable = true;
+                    if (newSelectable != m_currentSelectable)
                     {
-                        hasRaycastSelectable = true;
-                        if (newSelectable != m_currentSelectable)
-                        {
-                            Select(newSelectable);
-                            m_currentRaycastResult = result;
-                        }
-                        break;
+                        Select(newSelectable);
+                        m_currentRaycastResult = result;
                     }
                 }
             }