Unity3D中uGUI事件系统简述及使用方法总结
2014-09-27 03:54
621 查看
Unity3D的uGUI系统的将UI可能触发的事件分为12个类型,即EventTriggerType枚举的12个值。如下图所示:
![](http://images.cnitblog.com/blog/359548/201409/270350179672330.png)
先以PointerClick为例。这个是用于某点点击事件。其他事件都可以根据相同的办法调用。
之所以使用PointerClick为例。是因为在最后笔者会提到一个特殊的实现方式。而相比于其他事件类型,有且仅有Click事件存在特殊实现。
我们要实现事件主要有3种方式:
![](http://images.cnitblog.com/blog/359548/201409/270350191233017.png)
步骤一:创建ClickObject脚本。继承MonoBehaviour和IPointerClickHandler。
![](http://images.cnitblog.com/blog/359548/201409/270350195604616.png)
步骤二:实现public void OnPointerClick(PointerEventData eventData)方法:
步骤三:创建一个名为Panel_IPointer的空对象。并且将ClickObject脚本附加到对象上。
步骤四:启动,并点击Panel_IPointer对象。在Console输出如下:
![](http://images.cnitblog.com/blog/359548/201409/270350199673674.png)
![](http://images.cnitblog.com/blog/359548/201409/270350202642231.png)
步骤一:创建一个C#脚本。在脚本中添加一个public方法。
![](http://images.cnitblog.com/blog/359548/201409/270350205928031.png)
步骤二:创建一个命名为Empty的UI对象,用于接收和响应点击事件。创建一个名为Panel的UI对象,用于触发点击事件。
步骤三:Panel对象添加EventTrigger组件," Add New" -> 选择" PointerClick"。将Empty对象拖拽到触发者位置。然后点击"No Function"选择我们写在Test脚本中的OnTestClick事件。
![](http://images.cnitblog.com/blog/359548/201409/270350209678846.png)
![](http://images.cnitblog.com/blog/359548/201409/270350213894675.png)
步骤四:设置好这些之后。我们的事件触发就已经完成了。运行Unity3D。点击窗口中Panel对象。Console输出内容如下:
![](http://images.cnitblog.com/blog/359548/201409/270350217171476.png)
![](http://images.cnitblog.com/blog/359548/201409/270350220765519.png)
我们在日常的开发中。可能需要动态的需要变更绑定的事件。那么我们如何才能使用C#代码控制绑定触发事件呢?
下面我们就介绍代码控制。ScriptControl.cs脚本
![](http://images.cnitblog.com/blog/359548/201409/270350224208090.png)
针对Click事件还存在一种特殊方式:uGUI系统中官方提供了一种Button控件。Button封装了官方提供的一套OnClick事件。操作完全类似于方式二。便不详述了。
使用Button我们可以实现动态的变更鼠标绑定的点击事件。如下代码所示:
相关源码下载: http://pan.baidu.com/s/1c0pfNJM
作者:TinyZ
出处:http://www.cnblogs.com/zou90512/
关于作者:努力学习,天天向上。不断探索学习,提升自身价值。记录经验分享。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接
如有问题,可以通过 zou90512@126.com 联系我,非常感谢。
笔者网店: http://aoleitaisen.taobao.com. 欢迎广大读者围观
![](http://images.cnitblog.com/blog/359548/201409/270350179672330.png)
先以PointerClick为例。这个是用于某点点击事件。其他事件都可以根据相同的办法调用。
之所以使用PointerClick为例。是因为在最后笔者会提到一个特殊的实现方式。而相比于其他事件类型,有且仅有Click事件存在特殊实现。
我们要实现事件主要有3种方式:
方式一:继承基础接口实现
![](http://images.cnitblog.com/blog/359548/201409/270350191233017.png)
步骤一:创建ClickObject脚本。继承MonoBehaviour和IPointerClickHandler。
![](http://images.cnitblog.com/blog/359548/201409/270350195604616.png)
步骤二:实现public void OnPointerClick(PointerEventData eventData)方法:
步骤三:创建一个名为Panel_IPointer的空对象。并且将ClickObject脚本附加到对象上。
步骤四:启动,并点击Panel_IPointer对象。在Console输出如下:
![](http://images.cnitblog.com/blog/359548/201409/270350199673674.png)
方式二:Unity3D编辑器操作设置实现
![](http://images.cnitblog.com/blog/359548/201409/270350202642231.png)
步骤一:创建一个C#脚本。在脚本中添加一个public方法。
![](http://images.cnitblog.com/blog/359548/201409/270350205928031.png)
步骤二:创建一个命名为Empty的UI对象,用于接收和响应点击事件。创建一个名为Panel的UI对象,用于触发点击事件。
步骤三:Panel对象添加EventTrigger组件," Add New" -> 选择" PointerClick"。将Empty对象拖拽到触发者位置。然后点击"No Function"选择我们写在Test脚本中的OnTestClick事件。
![](http://images.cnitblog.com/blog/359548/201409/270350209678846.png)
![](http://images.cnitblog.com/blog/359548/201409/270350213894675.png)
步骤四:设置好这些之后。我们的事件触发就已经完成了。运行Unity3D。点击窗口中Panel对象。Console输出内容如下:
![](http://images.cnitblog.com/blog/359548/201409/270350217171476.png)
方式三:程序动态设置实现
![](http://images.cnitblog.com/blog/359548/201409/270350220765519.png)
我们在日常的开发中。可能需要动态的需要变更绑定的事件。那么我们如何才能使用C#代码控制绑定触发事件呢?
下面我们就介绍代码控制。ScriptControl.cs脚本
using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; public class ScriptControl : MonoBehaviour { // Use this for initialization void Start () { var trigger = transform.gameObject.GetComponent<EventTrigger>(); if (trigger == null) trigger = transform.gameObject.AddComponent<EventTrigger>(); // 实例化delegates trigger.delegates = 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); // 添加事件触发记录到GameObject的事件触发组件 trigger.delegates.Add(entry); } // Update is called once per frame void Update () { } public void OnScriptControll(BaseEventData arg0) { Debug.Log("Test Click"); } }
点击事件的特殊实现方式:使用Button控件实现
![](http://images.cnitblog.com/blog/359548/201409/270350224208090.png)
针对Click事件还存在一种特殊方式:uGUI系统中官方提供了一种Button控件。Button封装了官方提供的一套OnClick事件。操作完全类似于方式二。便不详述了。
使用Button我们可以实现动态的变更鼠标绑定的点击事件。如下代码所示:
using UnityEngine; using System.Collections; using UnityEngine.UI; public class BtnControl : MonoBehaviour { // Use this for initialization void Start () { var button = transform.gameObject.GetComponent<Button>(); if (button != null) { button.onClick.RemoveAllListeners(); button.onClick.AddListener(TestClick); } } public void TestClick() { Debug.Log("Test Click. This is Type 4"); } // Update is called once per frame void Update () { } }
相关源码下载: http://pan.baidu.com/s/1c0pfNJM
作者:TinyZ
出处:http://www.cnblogs.com/zou90512/
关于作者:努力学习,天天向上。不断探索学习,提升自身价值。记录经验分享。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接
如有问题,可以通过 zou90512@126.com 联系我,非常感谢。
笔者网店: http://aoleitaisen.taobao.com. 欢迎广大读者围观
相关文章推荐
- Unity3D中UGUI事件系统简述及使用方法总结
- 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事件系统简述及使用方法总结
- 【Unity3D入门教程】游戏开发利器UGUI的基本使用方法
- iOS开发中一些重要的系统方法使用注意事项总结
- IOS总结_IOS经常使用的方法集合、调用系统电话、设备区分、APP内永不锁屏
- uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)
- unity3d中使用不同方法获得position对应的坐标系统