Unity3D的UGUI 系统将UI可能触发的事件分为12个类型,即EventTriggerType枚举的12个值
如下图:
Paste_Image.png
这里以PointClick为例
方法一:继承基础接口实现
步骤1 , 创建ClickObject脚本。 继承MonoBehaviour和IPointerClickHandler.
Paste_Image.png步骤2. 实现接口方法 OnPointerClick(PointerEventData eventData) ,此处最好是pulick
步骤3. 将本脚本绑定在 ui上运行点击即可触发
方法二:程序动态设置实现
上代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using System;
/// <summary>
/// 几种点击事件的方法
/// 这里的 添加 button事件就不写啦
/// </summary>
public class Test : MonoBehaviour,IPointerClickHandler {
void Start () {
var trigger = transform.GetComponent<EventTrigger>();
if(trigger == null)
{
trigger = transform.gameObject.AddComponent<EventTrigger>();
}
// 实例化 delegete
trigger.triggers = new List<EventTrigger.Entry>();
// 定义需要绑定的事件类型。 并设置回调函数
EventTrigger.Entry entry = new EventTrigger.Entry();
// 设置事件类型
entry.eventID = EventTriggerType.PointerClick;
// 设置回调函数
entry.callback = new EventTrigger.TriggerEvent();
UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll); // 带参
entry.callback.AddListener(callback);
trigger.triggers.Add(entry);
}
void OnScriptControll(BaseEventData data)
{
Debug.Log(2222);
}
}
在这里等注意,要使用UI事件, 等添加UnityEngine.EventSystems引用空间, 要使用unity事件 ,等添加UnityEngine.Events引用空间
ok完事, 这里就不再写动态添加button的点击事件了,大家也肯定用的很熟练了。
网友评论