ngui按钮问题

2015年01月27日 09:27 0 点赞 0 评论 更新于 2025-11-21 15:31

本文将详细总结 NGUI 按钮在创建、点击事件处理以及按钮颜色显示方面的做法和思路,以下是具体步骤:

一、Button 控件概述

在 NGUI 3.5 中,Button 控件进行了整理。例如,更改了创建方式,支持通过搜索和拖拽来创建;同时,合并了 2.x 版本中的 Button 和 Image Button。这种设计是合理的,就像 wxPython 的 Button 一样,不区分基本按钮和图片按钮,只是在创建时通过不同的参数(重载)来实现不同的功能。

二、创建 Widget

如果项目中已经创建过 Widget(或者已经存在 UI Root 和 Camera),可以忽略此步骤,直接跳到步骤二。否则,请按照以下步骤操作:

  1. 确保项目中已经导入了 NGUI。如果不清楚如何导入,可以参考《NGUI 3.5 教程(一)》。也可以新建一个空白项目,然后导入 NGUI。
  2. 为了显示 label,需要新建一个 Widget(小工具)。在菜单上依次点击【NGUI】->【Create】->【Widget】。
  3. 操作完成后,Hierarchy 面板上会自动创建出 UI Root,其中包括 Camera 和 Container。

三、创建 Button

在 NGUI 3.5 中,创建 Button 的方式比较特殊,可以通过【搜索】和【拖拽】来实现,具体步骤如下:

  1. 在 Project 面板中搜索“Control”,即搜索控件。搜索后会显示出 NGUI 的一系列控件。
  2. 找到 Simple Button,将其拖拽到层级面板中。这里将其拖拽到 Container 下面。
  3. 在检视面板中,可以看到 Simple Button 默认包含 4 个组件:
    • Transform:作为 Unity 最基本的组件,这里不再详细解释。
    • UIScript (Script):这是 NGUI 默认挂载在 Button 上的脚本,主要用于指定图集(Atlas)、深度等操作。
    • UIButton(Script):该脚本也是 NGUI 默认挂载在 Button 上的,主要用于指定按钮的不同状态,如普通(Normal)、悬停(Hover,也称徘徊、经过)、按下(Pressed)、禁用(Disabled)。
    • Box Collider:这是默认挂在按钮上的一个盒碰撞器,其作用是使 Button 控件具有碰撞属性。在 NGUI 中,事件的触发都要求对象具有碰撞属性。
  4. 通过 Label 的 Text 属性,可以修改简单按钮上的文字。这里将其修改为“Button - 1”。

四、编写脚本处理 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 上。
3. 运行项目,点击按钮,会发现控制台打印出相应信息,这表明按钮点击事件成功响应。

<a id="heading-4-五-按钮显灰-禁用-设置"></a>
## 五、按钮显灰(禁用)设置
如果需要将按钮设置为显灰(禁用)状态,可以使用以下代码:

this.GetComponent ().isEnabled = false;

执行上述代码后,按钮会自动调用禁用状态时的颜色(如默认的浅灰色),并禁用按钮。