一、效果
点了【按钮2】后,会激发(invoke)【按钮1】的OnClick事件
二、激发一个按钮的OnClick事件的方法
- 1、用Invoke()激发
targetButton.onClick.Invoke();
- 2、用ExecuteEvents.Execute()分发
PointerEventData eventData = new PointerEventData(EventSystem.current);
ExecuteEvents.Execute(buttonOne.gameObject, eventData, ExecuteEvents.pointerClickHandler);//分发物体的Click事件
三、代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
/// <summary>
/// 点击一个button,激发另一个button的onClick事件
/// </summary>
public class TestButtonOnClickInvoke : MonoBehaviour
{
public Button buttonOne;
public Button buttonTwo;
// Start is called before the first frame update
void Start()
{
buttonOne.onClick.AddListener(() => Debug.Log("Button1:谁在点我!"));
buttonTwo.onClick.AddListener(() =>
{
Debug.Log("Button2:为什么点的总是我,我也要点一下button1");
//茴【香豆】字的第一种写法
Debug.Log("Button2:我用onClick.Invoke点它");
buttonOne.onClick.Invoke();
//茴【香豆】字的第二种写法
Debug.Log("Button2:我用EventSystems点它");
PointerEventData eventData = new PointerEventData(EventSystem.current);
ExecuteEvents.Execute(buttonOne.gameObject, eventData, ExecuteEvents.pointerClickHandler);//分发物体的Click事件
});
}
}