Unity3D的uGUI系统的将UI可能触发的事件分为12个类型,即EventTriggerType枚举的12个值。 先以PointerClick为例。这个是用于某点点击事件。其他事件都可以根据相同的办法调用。 实现事件主要有3种方式: 方式一:继承基础接口实现 步骤一:创建ClickEvent脚本。继承MonoBehaviour和IPointerClickHandler using UnityEngine; using System.Collections; using UnityEngine.EventSystems; public class Change : MonoBehaviour,IPointerEnterHandler,IPointerExitHandler{
public void OnPointerEnter(PointerEventData eventData) { //进入事件 transform.localScale= new Vector3(2,2,2); } public void OnPointerExit(PointerEventData eventData) { //退出事件 transform.localScale = new Vector3(1,1,1); } // Use this for initialization void Start () { } // Update is called once per frame void Update () { }} 效果如下:
步骤二:实现public void OnPointerClick(PointerEventData eventData)方法: 步骤三:创建一个名为Panel_IPointer的UI对象。并且将ClickEventt脚本附加到对象上。 步骤四:启动,并点击Panel_IPointer对象。在Console输出如下:
方式二:Unity3D编辑器操作设置实现 步骤一:创建一个C#脚本。在脚本中添加一个public方法。 步骤二:创建一个命名为Empty的UI对象,用于接收和响应点击事件。创建一个名为Panel的UI对象,用于触发点击事件。 步骤三:Panel对象添加EventTrigger组件,” Add New” -> 选择” PointerClick”。将Empty对象拖拽到触发者位置。然后点击”No Function”选择我们写在Test脚本中的OnTestClick事件。 方式三:程序动态设置实现 using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; public class ClickTest : MonoBehaviour { // Use this for initialization void Start () { var trigger = transform.gameObject.GetComponent(); if (trigger == null) trigger = transform.gameObject.AddComponent(); // 实例化delegates trigger.triggers = new List
