【转】一个新的UIButtonMessage 给NGUI,使用委托,自动选择Receiver提供的方法
http://blog.csdn.net/chiuan/article/details/9290651?utm_source=tuicool&utm_medium=referral
来分享一个新的NGUI按钮方法回调的脚本,个人不是很喜欢原来那个UIButtonMessage,根据原来稍微修改了下。会比原先的智能和优化代码结构,效率也会好些。
认识:一个按钮事件发生理应有2个东西:1、发生事件,2、接收对象
1、发生事件:
如上图,我们看见这是一个标准的NGUI创建后的按钮对象,添加了TTButtonMessage后,会提示选择发生的条件、接受者是谁、处理方法KEY
图中我们看到选择了一个Onclick方法KEY,这个Key是从Receiver身上获取的。
2、接受者
- using UnityEngine;
- using System.Collections.Generic;
- /// <summary>
- /// TT button message Receiver,Sample.
- /// chiuanwei 2013.5.7
- /// </summary>
- public class SampleButtonReceiver:TTButtonReceiver
- {
- public override void Start()
- {
- base.Start();
- Debug.Log("Start.");
- Debug.Log("Button Msg Length = " + ButtonMsgs.Count);
- }
- #region For Button Msg
- //Must implement init function of Button Receiver.
- //and init all function here.
- public override void InitButtonFunction()
- {
- base.InitButtonFunction(
- Msg.create("Onclick",Onclick)
- );
- }
- void Onclick(GameObject go)
- {
- Debug.Log("THE Button IS Clicked.");
- }
- #endregion
- }
上面就是一个最简单的接收者写法了,绑定在接收物体身上即可。
我们新建一个脚本继承TTButtonReceiver,然后复写Start()、InitButtonFunction()方法
1、在Start中要调用一下基类中的Start()执行初始化
2、在InitButtonFunction中,要调用base.InitButtonFunction(……),然后传入你需要创建的按键方法通过KEY - FUNCTION
例如我创建多个方法会如下调用:
- base.InitButtonFunction(
- Msg.create("Onclick",Onclick),
- Msg.create("Onclick2",Onclick2),
- Msg.create("Onclick3",Onclick3)
- );
3、延伸用法、贴士:
1、继承Receiver后有接口可以提供外部获取某个KEY的方法是否存在:public Msg GetMsgByKey(string key)
2、如果Reciever变化,选择过的KEY不会自动Remove,而会在面板提示你Recevier是否存在这个KEY的方法
最后漏了补上:
打包好的文件,要先把NGUI导入后再导这个包:http://game.ceeger.com/forum/read.php?tid=11789&fid=16
NGUI 3.5 ----- UIButton OnClick

【转】一个新的UIButtonMessage 给NGUI,使用委托,自动选择Receiver提供的方法的更多相关文章
- 今天代码中接触到了一个新的东西。js的上下自动滚动,无缝对接。
js的上下自动滚动,无缝对接.为什么会用到这个东西呢?因为我在做公司的官网项目的修改的时候.有一个产品介绍的页面,会有很多的产品出现在,中间部分的列表里.但是又不能够使用分页.所以我就在想如果,列表数 ...
- linux内核分析作业6:分析Linux内核创建一个新进程的过程
task_struct结构: struct task_struct { volatile long state;进程状态 void *stack; 堆栈 pid_t pid; 进程标识符 u ...
- Step by Step 创建一个新的Dynamics CRM Organization
原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...
- Step by step 如何创建一个新森林
原创地址:http://www.cnblogs.com/jfzhu/p/4006118.html 转载请注明出处 创建一个新森林就是在一台计算机上安装AD DS,并将这台计算机提升为域控制器. 演示环 ...
- 3.通过现有的PDB创建一个新的PDB
实验说明:创建PDB除了可以通过种子PDB创建外,现在测试通过一个现有的用户PDB克隆创建新的PDB数据库 实验步骤: 1.创建测试数据 SQL> alter session set conta ...
- 【Cocos2d-x for WP8 学习整理】(1)创建一个新项目
喜大普奔 10.1假期之前看到了一个很振奋的消息,就是随着Cocos2d-x 2.2的发布,WP8/WIN8有史以来第一次的合并到主版本了. 之前 V2 ...
- ZeroMQ接口函数之 :zmq_ctx_new – 创建一个新的ZMQ 环境上下文
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_ctx_new zmq_ctx_new(3) ØMQ Manual - ØMQ/3.2 ...
- ZeroMQ接口函数之 :zmq_curve_keypair - 生成一个新的CURVE 密钥对
ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_curve_keypair zmq_curve_keypair(3) ØMQ Manual - ØMQ/4.1.0 ...
- Virtualbox中不能为虚拟机打开一个新任务的原因及解决方法
VirtualBox新建虚拟机时报错,不能为虚拟机打开一个新任务的原因 解决办法如下 1.保证bios里的virtualization technology的选项开启,不同电脑BIOS设置可能会不一样 ...
随机推荐
- MySQL 5.7 mysqlpump 备份工具说明
背景: MySQL5.7之后多了一个备份工具:mysqlpump.它是mysqldump的一个衍生,mysqldump就不多说明了,现在看看mysqlpump到底有了哪些提升,可以查看官方文档,这里针 ...
- 初学Redis(1)——认识Redis
Redis官网对Redis的定义是:“Redis is an open source, BSD licensed, advanced key-value cache and store”,可以看出,R ...
- UIImage加载本地图片的两种方式
UIImage加载图片方式一般有两种: (1)imagedNamed初始化:默认加载图片成功后会内存中缓存图片,这个方法用一个指定的名字在系统缓存中查找并返回一个图片对象.如果缓存中没有找到相应的图片 ...
- union和union all 合并查询
union联合查询 SELECT TOP ID,oTitle Title,oInfo Description,Pic Images AND UpTime > dateadd(day,-,UpTi ...
- meta标签用法总结
注:本文并非本人撰写,摘自百度百科 meta标签用来描述一个HTML网页文档的属性,例如作者.日期和时间.网页描述.关键词.页面刷新等. 一.作用: META标签是HTML标记HEAD区的 ...
- Redis相关
Redis 持久化 1 why 数据需要持久化,当内存数据库使用的情况 防止缓存失效时候的雪崩效应 2 how 两种方式,快照和日志(aof)方式,各有优缺点. Redis的缓存失效策略 1 what ...
- UWP 图片剪切旋转工具
好久没撸随笔了,明天终于放假休息了..准备去进行信仰充值,看<魔兽>去(话说surface phone 好久出,让我这个做UWP的也充点信仰..) 先上下效果图: 在设计中,遇到一个问题, ...
- Appirater -- app中提示用户为app评价的提示框
Appirater是一段你可以嵌入自己工程中的代码,在用户使用应用一段时间后会自动弹出提示用户进行评分. 使用Appirater方面,你可以简单把源代码嵌入你的app工程中,并把以下代码添加至它的委托 ...
- SeekBar进度条简单案例
SeekBar是进度条.我们使用进度条时,可以使用系统默认的进度条:也可以自定义进度条的图片和滑块图片等 向右拉进度条让图片显示出来 向右拉五角星加载有色进度条 baseSeekBar package ...
- R 语言编码风格指南
R 语言是一门主要用于统计计算和绘图的高级编程语言.这份 R 语言编码风格指南旨在让我们的 R代码更容易阅读.分享和检查.以下规则系与 Google 的 R 用户群体协同设计而成. 概要: R编码风格 ...