看图 Button 前面 是一个 Image组件, 并且 Iamge组件的 Raycasttarget 是打开的,
需求是 让左边 的区域 下面的Button 响应点击事件
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ssss : MonoBehaviour ,ICanvasRaycastFilter { public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera) { if (sp.x > Screen.width/2) { return true; } else { return false; } } // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }
其实只要继承一个 ICanvasRaycastFilter 接口就可以了
然后左边的 地方下面的 Button 就可以 响应 点击事件了
主动触发点击事件
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class sss : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } private void OnGUI() { if (GUILayout.Button("DDDDDDDDDD")) { Button button = GameObject.Find("Button").GetComponent<Button>(); ExecuteEvents.Execute<IPointerClickHandler>(button.gameObject, new PointerEventData(EventSystem.current), ExecuteEvents.pointerClickHandler); } } public void Shit() { Debug.Log("===================================?"); } }