Unity3D中uGUI事件系统简述及使用方法总结
来源:互联网 发布:南京 人工智能 编辑:程序博客网 时间:2024/05/21 19:13
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 // 实例化delegates16 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 frame31 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 frame24 void Update () {25 26 }27 }
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中uGUI事件系统简述及使用方法总结
- Unity3D中UGUI事件系统简述及使用方法总结
- Unity3D中UGUI事件系统简述及使用方法总结
- uGUI事件系统简述及使用方法总结
- UGUI学习笔记(四)UGUI事件系统简述及使用方法总结
- UGUI_UGUI事件系统简述及使用方法总结
- 【UGUI】unity3D中ugui事件
- Unity3D NGUI,uGUI总结
- unity3D 在UGUI中动态添加button的监听事件
- 【Unity3D ugui】事件监听机制
- Linux防火墙的关闭和开启
- 让并发和容错更容易:Akka示例教程
- iOS音频
- Android实战技巧:深入解析AsyncTask
- 1020. Tree Traversals (25) -BFS
- Unity3D中uGUI事件系统简述及使用方法总结
- toString() ,(String),String.valueOf的差异
- Flex中的XMLListCollection,ArrayCollection和ObjectProxy
- 单链表基本操作
- Druid 数据库连接池连接MySQL中文乱码
- hdu 2085 核反应堆(递推)
- java用键盘的方向键控制一个图形块推着另一个图形块移动
- 数据库SQL中Like的用法总结
- Effective C++ 条款33