NGUI基础之button(按钮)
1,button的创建;2,button组件的基本属性;3,button的事件监听
原位地址:http://blog.csdn.net/dingkun520wy/article/details/50434520
1,button的创建
编辑器创建
代码创建
/// <summary>
/// 动态加载一个NGUI按钮
/// </summary>
/// <param name="panleMe">父节点对象</param>
/// <param name="atlas">用到的图集</param>
/// <param name="sriteName">图片的名字</param>
private void CreateServerButton(GameObject panleMe, UIAtlas atlas, string sriteName)
{
//获得深度(要创建button的Panle的深度)
int depth = NGUITools.CalculateNextDepth(panleMe);
//创建button物体,命名、设tag、摆所在panle的相对位置。
GameObject go = NGUITools.AddChild(panleMe);
//添加button的背景图片UISprite
UISprite bg = NGUITools.AddWidget<UISprite>(go);
bg.type = UISprite.Type.Sliced;
bg.depth = depth;
//背景图片使用的图集
bg.atlas = atlas;
//图集中使用的精灵名字
bg.spriteName = sriteName;
//跳转位置(必要)
bg.MakePixelPerfect(); //添加碰撞(有碰撞才能接收鼠标/触摸),大小与Button背景一致
BoxCollider box = NGUITools.AddWidgetCollider(go);
box.center = new Vector3(0, 0, -1);
box.size = new Vector3(bg.localSize.x, bg.localSize.y, 0); //添加UIButton触发事件的必要组件,并关联之前生成的UISprite
UIButton bt = go.AddComponent<UIButton>();
bt.tweenTarget = bg.gameObject; }
2,button组件的基本属性
按钮用到的UISprite
按钮的响应范围
UIButton的属性
3,button的事件监听
直接监听事件
把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不灵活。
void OnClick()
{
Debug.Log("Button is Click!!!");
}
使用SendMessage
选择按钮后,在Unity导航菜单栏中选择Component->Interaction->Button Message 组件。
Target:接收按钮消息的游戏对象。
Function Name:接收按钮消息的方法,拥有这个方法的脚本必须绑定在上面Target对象身上。
Trigger:触发的事件,OnClick显然是一次点击。
Include Children :是否让该对象的所有子对象也发送这个点击事件。
使用UIListener
这个也是推荐大家使用的一种方法,选择按钮后在Unity导航菜单栏中选择Component->NGUI->Internal ->Event Listener 。 挂在按钮上就可以,它没有任何参数。。
在任何一个脚本或者类中即可得到按钮的点击事件、把如下代码放在任意类中或者脚本中。
void Awake()
{
//获取需要监听的按钮对象
GameObject button= GameObject.Find("UI Root (2D)/Camera/Anchor/Panel/LoadUI/MainCommon/Button");
//设置这个按钮的监听,指向本类的ButtonClick方法中。
UIEventListener.Get(button).onClick= ButtonClick;
} //计算按钮的点击事件
void ButtonClick(GameObjectbutton)
{
Debug.Log("GameObject "+ button.name); }
更多操作类型
publicclass UIEventListener: MonoBehaviour
{
publicdelegate voidVoidDelegate (GameObjectgo);
publicdelegate voidBoolDelegate (GameObjectgo,bool state);
publicdelegate voidFloatDelegate (GameObject go,float delta);
publicdelegate voidVectorDelegate (GameObject go,Vector2 delta);
publicdelegate voidStringDelegate (GameObject go,string text);
publicdelegate voidObjectDelegate (GameObject go,GameObject draggedObject);
publicdelegate voidKeyCodeDelegate (GameObject go,KeyCode key); publicobject parameter; publicVoidDelegate onSubmit;
publicVoidDelegate onClick;
publicVoidDelegate onDoubleClick;
publicBoolDelegate onHover;
publicBoolDelegate onPress;
publicBoolDelegate onSelect;
publicFloatDelegate onScroll;
publicVectorDelegate onDrag;
publicObjectDelegate onDrop;
publicStringDelegate onInput;
publicKeyCodeDelegate onKey; voidOnSubmit (){ if(onSubmit!= null)onSubmit(gameObject);}
voidOnClick (){ if(onClick!= null)onClick(gameObject);}
voidOnDoubleClick (){ if(onDoubleClick!= null)onDoubleClick(gameObject);}
voidOnHover (boolisOver){ if(onHover!= null)onHover(gameObject,isOver);}
voidOnPress (boolisPressed){ if(onPress!= null)onPress(gameObject,isPressed);}
voidOnSelect (boolselected){ if(onSelect!= null)onSelect(gameObject,selected);}
voidOnScroll (floatdelta){ if(onScroll!= null)onScroll(gameObject,delta);}
voidOnDrag (Vector2delta){ if(onDrag!= null)onDrag(gameObject,delta);}
voidOnDrop (GameObjectgo){ if(onDrop!= null)onDrop(gameObject,go);}
voidOnInput (stringtext){ if(onInput!= null)onInput(gameObject,text);}
voidOnKey (KeyCodekey){ if(onKey!= null)onKey(gameObject,key);} /// <summary>
/// Get or add an event listener to the specified game object.
/// </summary> staticpublic UIEventListenerGet (GameObjectgo)
{
UIEventListenerlistener =go.GetComponent<UIEventListener>();
if(listener== null)listener =go.AddComponent<UIEventListener>();
returnlistener;
}
}
NGUI基础之button(按钮)的更多相关文章
- Unity3D NGUI 给button按钮添加单间事件
Unity3D中, NGUI 给button按钮添加单间事件的方法很多,在这里只给推荐一种比较常用的方法. 推荐方法:使用UIListener. 1.给button组价添加上UIListener.选择 ...
- Unity3d ngui基础教程
Unity3d ngui基础教程 NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a N ...
- Bootstrap<基础十四> 按钮下拉菜单
使用 Bootstrap class 向按钮添加下拉菜单.如需向按钮添加下拉菜单,只需要简单地在在一个 .btn-group 中放置按钮和下拉菜单即可.也可以使用 <span class=&qu ...
- Bootstrap框架(基础篇)之按钮,网格,导航栏,下拉菜单
一,按钮 注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用button或a标签来制作按钮. 框架中提供了基础按 ...
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天学习自定义Button按钮样式.Button样式修改的是Button的背景 ...
- AWT编程时,Button按钮上的中文编程□□□
今天学到AWT编程时,照着书上的代码打,代码如下: import java.awt.*; public class PanelTest{ public static void main(Stri ...
- button 按钮,结合onclick事件,验证和提交表单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 如何在MFC界面开发中响应Button按钮的Down和Up事件
通过尝试有两种方案可以解决这个问题,第一种方案是通过PreTranslateMessage函数在调度消息之前对消息类型进行筛选,第二种方案是重载CButton类,在重载后的类CForTestButto ...
- 遭遇input与button按钮背景图失效不显示的解决办法
笔者从事网页前端代码页面工程师已有多年,作为一个网页重构人员常常会遇到一些莫名其妙的DIV+CSS(正确的说法是XHTML+CSS)在 IE.FireFox火狐. 谷歌浏览器CHROME.苹果浏览器S ...
随机推荐
- TortoiseSVN 更新时忽略指定文件夹
命令行可以这么来svn update –set-depth=exclude 文件夹 那么TortoiseSVN客户端呢?在文件夹右键中的”更新至版本(U)”更新深度选”排除”,确定,搞定下次更新就不会 ...
- 常见的Activity Action Intent常量
Intent的中文意思是“意图,目的”的意思,可以理解为不同组件之间通信的“媒介”或者“信使”. 目标组件一般要通过Intent来声明自己的条件,一般通过组件中的<intent-filter&g ...
- iOS中-Qutarz2D详解及使用
在iOS中Qutarz2D 详解及使用 (一)初识 介绍 Quartz 2D是二维绘图引擎. 能完成的工作有: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成 ...
- 使用Eclipse maven构建springmvc项目
Eclipse maven构建springmvc项目 Listener 监听器 架构 使用Log4J监控系统日志邮件警报 2014-12-16 13:09:16 控制器在完成逻辑处理后,通常会产生一些 ...
- linux工程管理工具make入门
一.make工具的功能 1.主要负责一个软件工程中多个源代码的自动编译工作 2.还能进行环境检测.后期处理等工作: 3.make工具可以识别出工程中哪些文件已经被修改,并且在再次编译的时候只编译这些文 ...
- get the runing time of C++ console program.
// 获取程序运行时间.cpp : 定义控制台应用程序的入口点.// #include "stdafx.h"#include <time.h>#include < ...
- OpenJudge 666:放苹果
总时间限制: 1000ms 内存限制: 65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输 ...
- 几道hihocoder不会做的题
1.https://hihocoder.com/problemset/problem/1433?sid=970287 boarding passes,不会做,看的别人的代码,现在还不是很理解. 2. ...
- poj 3268 Silver Cow Party
S ...
- 【风马一族_Android】代码英语之二 布局文件的Android各个参数
布局文件的Android各个参数 第一类:属性值 true或者 false android:layout _center Hrizontal 水平居中 android:la ...