[Unity3D] 一个新的UIButtonMessage 给NGUI,使用委托,自动选择Receiver提供的方法

好久没更新博客咯,最近潜心项目ing。。。来补一个好东西给大家


来分享一个新的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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值