关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式
Checkbox复选框
1.创建一个NGUI背景Sprite1节点
2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节点Sprite1下,删除每个复选框节点下的NGUI Snapshot Point 20子节点,调整位置
3.可以更改每个复选框节点下的Label子节点里面的文字

4.这时候两个复选框可以同时被选中,如果想要做只能选中其中一个,就要设置复选框节点下的UI Toggle组件下的Group值,两个节点的Group值设置为一样就是同一组,就只能一个被选中


Slider滑动条
1.创建一个NGUI背景Sprite1节点
2.打开NGUI---->Open---->Prefab Toolbar---->选择一个Slider滑动条节点,拖拽到背景节点Sprite1下,调整位置

3.UI Slider组件
Value:进度条的值
Foreground:前景图片
Background:背景图片
:值改变的时候会用这个函数改变Label的值
4.如果改变一下颜色和Label的位置,就可以做一个血条的效果,只要用代码来改变Slider组件的Value值就可以了



Button添加事件的6种方法
1.创建一个Sprite类型的Spritebutton节点在背景Sprite1下作为按钮子节点,可以给Spritebutton一个贴图和文字
2.给Spritebutton节点添加按钮组件,NGUI---->Attach---->Collider和Button Script组件
3.创建一个脚本mybuttonCallBack,打开mybuttonCallBack.cs
方法1:直接监听事件 ----- 不推荐使用
把下面代码直接写在mybuttonCallBack里,然后拖mybuttonCallBack脚本到有UI Button组件的节点上,就绑定在按钮节点上了,当按钮点击时就可以监听到,这种方法不太好很不灵活。
void OnClick()
{
Debug.Log("Button is Click!!!");
}
方法2:onClick 列表 ------ 推荐使用
把下面代码直接写在mybuttonCallBack里,然后拖mybuttonCallBack脚本到有UI Button组件的节点上,就绑定在按钮节点上了,当按钮点击时就可以监听到,
void Start ()
{
//获得UIButton组件里面的onClick事件代理列表,public List<EventDelegate> onClick = new List<EventDelegate>(),给这个列表里面添加一个新的事件
this.GetComponent<UIButton>().onClick.Add(new EventDelegate(this.OnClickButton2));
} void OnClickButton2 ()
{
Debug.Log("OnClickButton2");
}
另一种写法,这种可以写在任意类中或者脚本中
void Start()
{
GameObject jump_button = GameObject.Find("game_root/cameras/UI Root/jump");
jump_button.GetComponent<UIButton>().onClick.Add(new EventDelegate(this.Jump));
}
public void Jump()
{
}
方法3:使用SendMessage:早期的方法,不推荐使用,用多了之后消息满天飞,性能低,对于后期维护和代码调试非常不好, 尤其是几万行代码之后,现在游戏一般都是5万行或者一二十万行的代码------- 不推荐使用
选择按钮Spritebutton后,在Unity导航菜单栏中选择Component->Interaction->Button Message 组件。
Target:接收按钮消息的游戏对象。是按钮节点Spritebutton。
Function Name:接收按钮消息的方法,拥有这个方法的脚本mybuttonCallBack必须绑定在上面Target对象Spritebutton身上。
Trigger:触发事件的方式,OnClick显然是一次点击,还有OnMouseovor鼠标经过等等。
Include Children :是否让该对象的所有子对象也发送这个点击事件。
方法4:UIEventListener --------推荐使用
选择按钮后在Unity导航菜单栏中选择Component->NGUI->Internal ->Event Listener 。 如果不添加也可以,运行的时候会帮我们自动添加一个,所以手动添加会更快,避免了添加组件的代码的执行。
挂在按钮上就可以,它没有任何参数。
在任何一个脚本或者类中即可得到按钮的点击事件、把如下代码放在任意类中或者脚本中。
//或者写在void Start ()
void Awake ()
{
//获取需要监听的按钮对象
GameObject button = GameObject.Find("UI Root/Camera/Anchor/Panel/LoadUI/MainCommon/Button");
//设置这个按钮的监听,指向本类的ButtonClick方法中。如果这个脚本是挂在按钮上的,就不用上一句,button用this.gameobject代替
UIEventListener.Get(button).onClick = ButtonClick4;
} //计算按钮的点击事件
void ButtonClick4(GameObject button)
{
Debug.Log("ButtonClick4");
}
方法5:EventDelegate --------推荐使用
和第2种方法类似,把下面代码直接写在mybuttonCallBack里,然后拖mybuttonCallBack脚本到有UI Button组件的节点上,就绑定在按钮节点上了,当按钮点击时就可以监听到,
void Start ()
{
// 给Button按钮添加监听事件
EventDelegate.Add (GetComponent<UIButton> ().onClick, AddOnClick5);
} public void AddOnClick5 ()
{
Debug.Log ("AddOnClick5");
} // 取消NGUI按钮的监听事件
public void CancelOnClick ()
{
EventDelegate.Remove (GetComponent<UIButton> ().onClick, AddOnClick5);
}
方法6:UIEventTrigger --------推荐使用
选择按钮节点,添加一个UI EventTrigger组件,里面可以设置各种各样的触发事件的方式以及可以设置绑定事件的节点和设置要触发的节点里面所挂载脚本的public方法。

关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式的更多相关文章
- Web版需求征集系统所得1,servlet中获取checkbox复选框的值
servlet中获取checkbox复选框的值 </tr> <tr> <td align="right">研究类型</td> < ...
- 表格中的checkbox复选框 全选非全选 公共方法 及提交选中结果
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- ZH奶酪:纯CSS自定义Html中Checkbox复选框样式
原文链接:http://www.lrxin.com/archives-683.html 首先看下效果: 点击演示地址查看实例. 首先,需要添加一段CSS隐藏所有的Checkbox复选框,之后我们会改变 ...
- 转 纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- 【转】纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
- checkbox复选框样式
随着现代浏览器的流行,纯CSS设置checkbox也变的很是实用,下面会讲到5种与众不同的checkbox复选框. 首先,需要添加一段CSS隐藏所有的Checkbox复选框,下面我们会改变它的外观.要 ...
- js做全选,用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false
用一个checkbox复选框做多个checkbox复选框的全选按钮,有一个复选框未被选择时,全选按钮的checked就为false,当所有checkbox都被选中时,全选按钮也被选中. 详解: 有两种 ...
- 如何让checkbox复选框只能单选
function框架div 如何让checkbox复选框只能单选 在项目开发中遇到一个这样的问题,要让一列复选框架在任何时间段内只能选择一个. 有人说怎么不用单选框了,因为单选框一旦选择了就不能取消选 ...
- 纯CSS设置Checkbox复选框控件的样式
Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...
随机推荐
- mysql参数innodb_flush_log_at_trx_commit
查看mysql数据库innodb_flush_log_at_trx_commit : mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log%'; ...
- CSDN 博客 美化 个性化
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha ========= ======== <a href=" http:// ...
- ZJUT 地下迷宫 (高斯求期望)
ShowID=1423">http://cpp.zjut.edu.cn/ShowProblem.aspx?ShowID=1423 设dp[i]表示在i点时到达终点要走的期望步数,那么d ...
- [Beego模型] 五、构造查询
[Beego模型] 一.ORM 使用方法 [Beego模型] 二.CRUD 操作 [Beego模型] 三.高级查询 [Beego模型] 四.使用SQL语句进行查询 [Beego模型] 五.构造查询 [ ...
- Spark:java api读取hdfs目录下多个文件
需求: 由于一个大文件,在spark中加载性能比较差.于是把一个大文件拆分为多个小文件后上传到hdfs,然而在spark2.2下如何加载某个目录下多个文件呢? public class SparkJo ...
- 浅谈压缩感知(二十二):压缩感知重构算法之正则化正交匹配追踪(ROMP)
主要内容: ROMP的算法流程 ROMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 一.ROMP的算法流程 正则化正交匹配追踪ROMP算法流程与OMP的最大不同之 ...
- 【机器学习算法-python实现】採样算法的简单实现
1.背景 採样算法是机器学习中比較经常使用,也比較easy实现的(出去分层採样).经常使用的採样算法有下面几种(来自百度知道): 一.单纯随机抽样(simple random samp ...
- Android系统资源图标android.R.drawable
Android™ 2.1 android.R.drawable Icon Resources Android™ 1.5 android.R.drawable Icon Resources Androi ...
- c/c++ 读入一行不确定个数的整数
假设有一个文件,文件的每一行包括n个整数,整数之间以一个空格隔开,文件总共有m行,但是事先不知道n,m.如何每次从文件中读取一行整数放到一个数组中. 可以分为两步:1.首先从文件中读入一行字符串,2. ...
- 基于Python3.6使用Django框架连接mysql数据库的驱动模块安装解决办法
解决办法1 使用PyMySQL模块,直接使用pip install pymysql即可. 参考文章:https://www.cnblogs.com/wcwnina/p/8719482.html 原文内 ...