Unity3D 新版NGUI事件添加

在新版的NGUI中,事件机制发生了变化,添加的事件的方式也与之前有所差别了。

我们来看看普通的控件事件:

1.不带参数的事件,例如UIButton,如下图所示:

在UIButton中,我们只需要拖动包含事件处理的脚本到OnClick上面,然后勾选处理事件的函数即可。

2.带参数的事件

在很多事件中,我们需要了解到某些参数的变化,来做一系列的操作的,例如UISlider,UIToggle等,如下图所示:

大家可以看到,在UIToggle和UISlider上的事件更改为On Value Change了。

也就是说,可以将某些更改的属性作为参数传入事件处理的方法。

同样的,在Notify后面拖入包含事件函数的脚本的物体,选择执行事件的Method方法,然后在Arg那里,选择传入某个Object的某个属性。

例如:上面的UIToggle,我们传入了UIToggle的isChecked属性,用于根据是否选中,来做不同的操作;同样的,在UISlider中,我们在函数中传入了UISlider的Value属性,也就是说我们拖动UISlider,然后UISlider的当前值会传入到执行事件的函数参数里。

这样的更改,对于我们来说,事件的添加更加简化和明了了。还是很方便的。

3.其他的事件

对于NGUI提供的控件来说,本身的事件已经可以很简单的添加了。那么,如果是我们自己的UITexture等Object,又如何执行点击等事件呢?

首先,我们需要给我们的UITexture添加一个Box Collider(显而易见,涉及到事件处理,那必须有Collider碰撞),然后添加一个Event Trigger脚本。这个脚本就是用来处理点击,双击,拖动等等事件的。

如下图所示:

同样的我们只需要拖动自己的事件脚本物体到Notify上面,并且选择执行的事件即可。

那么,简单的介绍就到这了。

总的来说,NGUI目前的事件机制相对而已已经很方便了,我们可以很容易的通过非代码操作来关联和事件处理。在很长一段时间里,Unity自带的UI应该无法撼动NGUI的地位。

本文章为个人原创,转载请注明出处,个人博客地址:http://www.wjfxgame.com,本人CSDN博客:http://blog.csdn.net/wingfourever。

时间: 2024-10-13 15:44:56

Unity3D 新版NGUI事件添加的相关文章

Unity3D在NGUI中使用mask

过程是这样的:最近一直想做一个头像的mask效果,后来发现原来unity的mask需要用shader来写,网上找了不少资料,也能实现,不过大多数都是用render texture作为相机投影的texture.然后把这个相机的图像作为一个material,然后在ngui中创建一个texture,把这个material赋给texture.怎么说呢,这种方式虽然也能实现,但是必须要创建一个相机,对于一个大型项目来说有点不切实际.一个头像加个mask多简单的一件事,肯定有更好的办法. 最终还是找到了一种

NGUI学习笔记(四):动态加载UI和NGUI事件

动态加载UI 我们进入一个场景后,如果将这个场景所有可能用到的UI都直接放在场景中做好,由于要在进入场景时就部署好所有的UI对象,那么当UI对象较多时会碰到的问题是:1.初始化场景会产生非常明显的卡顿.2.所有UI都在场景中导致占用大量的内存. 所以我们需要对UI组件进行动态加载和销毁,当需要打开指定的UI时,动态的创建出这个UI对象,而当关闭这个UI对象之后,可以对其进行销毁从而释放出内存. 将UI制作成一个预制件 我们可以在场景中制作好一个UI,然后将其保存成一个预制件后从场景中移除,然后我

unity3D技术之事件函数的执行顺序[转]

unity3D技术之事件函数的执行顺序 转自http://www.yxkfw.com/?p=13703 在unity的脚本,有大量的脚本执行按照预先确定的顺序执行的事件函数.此执行顺序说明如下: Editor Reset: Reset调用来初始化脚本的属性,当它第一次附加到该对象,并且使用Reset命令时. 第一次Scene Load scene启动 (一次为每个场景中的对象) 时,会调用这些函数. Awake:此函数始终是开始任何职能之前调用,并且也是在一个预置实例化之后.(如果一个游戏对象处

Unity事件处理机制与NGUI事件机制

1 Unity原生 1.1 GUI void OnGUI(){ if(GUI.Button(Rect position, string text)){ //点击后立即执行 } 1.1 Input 每个手指触控是通过Input.touches数据结构描述的: fingerId 手指索引 The unique index for a touch. 触摸的唯一索引. position 位置 The screen position of the touch. 触摸屏幕的位置. deltaPosition

Ugui按钮事件添加方法

按钮事件添加方法3个例子 Eg1: using UnityEngine; using System.Collections; using UnityEngine.Events;//引用事件命名空间 using UnityEngine.UI;//引用UI命名空间 public class Test : MonoBehaviour { // Use this for initialization void Start () { //定义Action,并赋予delegate方法 UnityAction

unity3d动画帧事件回调脚本必须直接挂在模型上

unity3d动画帧事件回调脚本必须直接挂在模型上,即与Animator同级,不能挂接在模型的父节点或者子节点,否则无法找到回调函数 以上在idle动作中新增帧事件skill,回调模型脚本中的skill()函数

新版SDK自动添加PlaceholderFragment的思考

自从Android SDK更新到22.6.3,发现新建Activity的时候,会自动生成一个Fragment,这个Fragment是activity的静态内部类,同时生成了一个xml叫fragment_main.xml.打开activity_main.xml发现,只剩一个容器.很明显,谷歌希望大伙把UI写在fragment中. 从Fragment出来后,我和朋友讨论过,说谷歌这样子造成了一种混乱.一个APP,可以只用activity来实现,也即一个APP是同多个Activity构成.也可以只有一

SVG的内部事件添加

SVG的内部事件添加: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServe

Extjs中给同一个GridPanel中的事件添加参数的方法

Extjs中给同一个GridPanel中的事件添加参数的方法: this.isUse = new Ext.Action({            text:'启用',            scope:this,            handler:this.isUseWin.createDelegate (this,[1])        });        this.isNotUse = new Ext.Action({            text:'停用',