Unity3D的uGUI系统的将UI可能触发的事件分为12个类型,即EventTriggerType枚举的12个值。如下图所示:
先以PointerClick为例。这个是用于某点点击事件。其他事件都可以根据相同的办法调用。
之所以使用PointerClick为例。是因为在最后笔者会提到一个特殊的实现方式。而相比于其他事件类型,有且仅有Click事件存在特殊实现。
我们要实现事件主要有3种方式:
方式一:继承基础接口实现
步骤一:创建ClickObject脚本。继承MonoBehaviour和IPointerClickHandler。
步骤二:实现public void OnPointerClick(PointerEventData eventData)方法:
步骤三:创建一个名为Panel_IPointer的空对象。并且将ClickObject脚本附加到对象上。
步骤四:启动,并点击Panel_IPointer对象。在Console输出如下:
方式二:Unity3D编辑器操作设置实现
步骤一:创建一个C#脚本。在脚本中添加一个public方法。
步骤二:创建一个命名为Empty的UI对象,用于接收和响应点击事件。创建一个名为Panel的UI对象,用于触发点击事件。
步骤三:Panel对象添加EventTrigger组件," Add New" -> 选择" PointerClick"。将Empty对象拖拽到触发者位置。然后点击"No Function"选择我们写在Test脚本中的OnTestClick事件。
步骤四:设置好这些之后。我们的事件触发就已经完成了。运行Unity3D。点击窗口中Panel对象。Console输出内容如下:
方式三:程序动态设置实现
我们在日常的开发中。可能需要动态的需要变更绑定的事件。那么我们如何才能使用C#代码控制绑定触发事件呢?
下面我们就介绍代码控制。ScriptControl.cs脚本
1 using System.Collections.Generic; 2 using UnityEngine; 3 using UnityEngine.Events; 4 using UnityEngine.EventSystems; 5 6 public class ScriptControl : MonoBehaviour { 7 8 // Use this for initialization 9 void Start () 10 { 11 var trigger = transform.gameObject.GetComponent<EventTrigger>(); 12 if (trigger == null) 13 trigger = transform.gameObject.AddComponent<EventTrigger>(); 14 15 // 实例化delegates 16 trigger.delegates = new List<EventTrigger.Entry>(); 17 18 // 定义需要绑定的事件类型。并设置回调函数 19 EventTrigger.Entry entry = new EventTrigger.Entry(); 20 // 设置 事件类型 21 entry.eventID = EventTriggerType.PointerClick; 22 // 设置回调函数 23 entry.callback = new EventTrigger.TriggerEvent(); 24 UnityAction<BaseEventData> callback = new UnityAction<BaseEventData>(OnScriptControll); 25 entry.callback.AddListener(callback); 26 // 添加事件触发记录到GameObject的事件触发组件 27 trigger.delegates.Add(entry); 28 } 29 30 // Update is called once per frame 31 void Update () { 32 33 } 34 35 public void OnScriptControll(BaseEventData arg0) 36 { 37 Debug.Log("Test Click"); 38 } 39 40 }
点击事件的特殊实现方式:使用Button控件实现
针对Click事件还存在一种特殊方式:uGUI系统中官方提供了一种Button控件。Button封装了官方提供的一套OnClick事件。操作完全类似于方式二。便不详述了。
使用Button我们可以实现动态的变更鼠标绑定的点击事件。如下代码所示:
1 using UnityEngine; 2 using System.Collections; 3 using UnityEngine.UI; 4 5 public class BtnControl : MonoBehaviour { 6 7 // Use this for initialization 8 void Start () 9 { 10 var button = transform.gameObject.GetComponent<Button>(); 11 if (button != null) 12 { 13 button.onClick.RemoveAllListeners(); 14 button.onClick.AddListener(TestClick); 15 } 16 } 17 18 public void TestClick() 19 { 20 Debug.Log("Test Click. This is Type 4"); 21 } 22 23 // Update is called once per frame 24 void Update () { 25 26 } 27 }
相关推荐
Unity3D中uGUI事件系统简述及使用方法总结.pdf Unity3D中uGUI事件系统简述及使用方法总结.pdf Unity3D中uGUI事件系统简述及使用方法总结.pdf Unity3D中uGUI事件系统简述及使用方法总结.pdf Unity3D中uGUI事件...
Unity3D中使用uGUI实现3D旋转特效(简单,好用),只需要两个脚本文件
unity3d UGUI官方案例,unity3d UGUI官方案例,unity3d UGUI官方案例
unity3d中的ugui制作一个全天日历,时间每天实时更新。
unity3D UGUI循环显示3D模型 unity3D UGUI循环显示3D模型 unity3D UGUI循环显示3D模型 unity3D UGUI循环显示3D模型
Unity3D4.6UGUI开发设计及案例讲解
在Unity UGUI下显示3D特效,如粒子特效、Mesh UV特效等,解决不同分辨率手机下的屏幕自适应问题、显示叠层问题。
unity3d基于ScrollRect的无限循环列表插件,功能强大齐全,压缩包内有v2.4.3和v2.4.4版本
基于Unity3d UGUI实现的摇杆JoyStick,将预制体拖入Canvas节点中即可
UNITY3D—UGUI场景小地图工程文件 博客:http://blog.csdn.net/u012322710/article/details/53212975
Unity3d C# UGUI实现自动循环滚动的列表(ScrollRect)的功能源码 建议看说明:https://blog.csdn.net/qq_33789001/article/details/120813324
Unity3D 使用UGUI Toggel 配合Image实现选项卡功能操作
Unity3d仿3D滑动很真实,基于UGUI实现 例如卡牌的选择,关卡选择都能使用。
Unity3d C# 基于UGUI实现类似WX聊天气泡功能, 建议先看说明:https://blog.csdn.net/qq_33789001/article/details/123331284
Unity3D4.6UGUI开发设计及案例讲解.doc
Unity3d C# 实现UGUI软键盘输入,实现中文、英文输入都支持。 建议先看说明:https://blog.csdn.net/qq_33789001/article/details/119329690 支持单字打字,没有个人的偏好、兴趣的设置,也没有使用频率等信息,所以...
Unity3d C# 实现UGUI面板跟随标注3D模型功能源码 建议先看说明:https://blog.csdn.net/qq_33789001/article/details/120864639
Unity3d C#实现UGUI的界面可拖拽移动和选中置顶等功能 建议先看说明:https://blog.csdn.net/qq_33789001/article/details/119345591
Unity3D Ugui基础控件的使用demo 举例了inputField image text button toggle Slider Scrollbar scrollview(listview),GridView的基本使用方法
Unity3D ugui艺术字方案,使用BMFont制作艺术字图集,在ugui的Text组件上显示。