Unity 代码调用Button中Event Trigger下PointerUp中挂在的事件
时间: 2024-03-18 17:40:17 浏览: 127
在 Unity 中,可以通过以下方式来代码调用 Button 中 Event Trigger 下 Pointer Up 中挂在的事件:
1. 获取 Button 组件。
```csharp
Button btn = GetComponent<Button>();
```
2. 获取 EventTrigger 组件。
```csharp
EventTrigger eventTrigger = btn.GetComponent<EventTrigger>();
```
3. 获取 PointerUp 事件的 Entry。
```csharp
EventTrigger.Entry entry = eventTrigger.triggers.Find(x => x.eventID == EventTriggerType.PointerUp);
```
4. 获取 Entry 中的回调函数列表。
```csharp
List<UnityEventBase> callbackList = entry.callback.GetPersistentEventHandlers();
```
5. 遍历回调函数列表,执行其中的回调函数。
```csharp
foreach (UnityEventBase callback in callbackList)
{
callback.Invoke();
}
```
完整的示例代码如下:
```csharp
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections.Generic;
public class ButtonController : MonoBehaviour
{
public Button button;
void Start()
{
// 获取 Button 组件
Button btn = GetComponent<Button>();
// 获取 EventTrigger 组件
EventTrigger eventTrigger = btn.GetComponent<EventTrigger>();
// 获取 PointerUp 事件的 Entry
EventTrigger.Entry entry = eventTrigger.triggers.Find(x => x.eventID == EventTriggerType.PointerUp);
// 获取 Entry 中的回调函数列表
List<UnityEventBase> callbackList = entry.callback.GetPersistentEventHandlers();
// 遍历回调函数列表,执行其中的回调函数
foreach (UnityEventBase callback in callbackList)
{
callback.Invoke();
}
}
}
```
在上面的示例代码中,通过 GetComponent() 方法获取了 Button 组件,并通过 GetComponent<EventTrigger>() 方法获取了 EventTrigger 组件。然后通过 Find() 方法获取了 PointerUp 事件的 Entry,再通过 GetPersistentEventHandlers() 方法获取了回调函数列表,最后遍历回调函数列表,执行其中的回调函数。这样就可以在代码中调用 Button 中 Event Trigger 下 Pointer Up 中挂在的事件。
阅读全文