最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
如何获取NGUI按钮按下的信息
在使用NGUI时,我们常常会遇到需要获取按钮按下信息的情况。相信这并非我一人所面临的问题,很多开发者都曾遇到过。因此,我想在这里和大家分享一下我解决该问题的方法,若有不足之处,欢迎大家指出,我们共同探讨。
Button -- 按钮
在NGUI 3.5版本中,Button控件进行了一系列整理。例如,更改了创建方式,可通过搜索和拖拽来创建;还将2.x版本中的Button和Image Button进行了合并。个人认为这种改动是合理的,就像wxPython里的Button,它并不区分基本按钮和图片按钮,只是在创建时通过不同的参数(重载)来实现不同的功能。
1. 创建 Widget
如果项目中已经创建过Widget(或者存在UI Root和Camera),可直接跳过此步骤,进入步骤2;否则,请按以下步骤操作:
- 确保项目中已经导入了NGUI。若对此有疑问,可参考我写的《NGUI 3.5教程(一)》。也可以新建一个空白项目,然后导入NGUI。
- 为了显示label,需要新建一个Widget(小工具)。在菜单上依次点击【NGUI】-->【Create】-->【Widget】。之后,Hierarchy面板会自动创建出UI Root,其中包括Camera和Container。
2. 创建 Button
在NGUI 3.5中,创建Button的方式较为特殊,可通过搜索和拖拽来完成,具体步骤如下:
(1)搜索控件
在Project面板中搜索“Control”,此时会显示出NGUI的一系列控件。
(2)拖拽控件
找到Simple Button,将其拖拽到层级面板中。我这里将它拖拽到了Container下面。
在检视面板中,可以看到Simple Button默认包含4个组件:
- Transform:作为Unity中最基本的组件,这里不再赘述。
- UIScript (Script):这是NGUI默认挂载在Button上的脚本,主要用于指定图集(Atlas)、深度等操作。
- UIButton(Script):同样是NGUI默认挂载在Button上的脚本,主要用于指定按钮的不同状态,如普通(Normal)、悬停(Hover,也称徘徊、经过)、按下(Pressed)、禁用(Disabled)。
- Box Collider:这是默认挂载在按钮上的盒碰撞器,其作用是使Button控件具有碰撞属性。在NGUI中,事件的触发都要求对象具有碰撞属性。
(3)修改按钮文字
通过Label的Text属性,可以为简单按钮修改文字。我将其改为了Button - 1。
3. 编写脚本,处理 Button 点击事件
(1)创建脚本
在Project面板中,新建一个Scripts文件夹,然后右键选择【Create】-->【C# Script】,创建一个C#脚本,命名为TestButton.cs。脚本内容如下:
using UnityEngine;
using System.Collections;
public class TestButton : MonoBehaviour {
// Use this for initialization
void Start () {
}
void OnClick () {
Debug.Log("OK! Get the click!");
}
}
(2)挂载脚本并运行
保存脚本后,将其拖拽到层级面板的Control - Simple Button上,然后运行项目。点击按钮,会发现控制台输出了相应的打印信息,这表明按钮点击事件已成功响应。
按钮显灰(按钮disable)设置
若要使按钮显灰并禁用,可以使用以下代码:
this.GetComponent<UIButton> ().isEnabled = false;
执行该代码后,按钮会自动调用disable状态时的颜色(如默认的浅灰色),并禁用按钮。