博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NGUI基础之button(按钮)
阅读量:6552 次
发布时间:2019-06-24

本文共 3845 字,大约阅读时间需要 12 分钟。

1,button的创建;2,button组件的基本属性;3,button的事件监听

原位地址:

1,button的创建

编辑器创建

代码创建

 

///     /// 动态加载一个NGUI按钮    ///     /// 父节点对象    /// 用到的图集    /// 图片的名字    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
(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
(); 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);} /// /// Get or add an event listener to the specified game object.///  staticpublic UIEventListenerGet (GameObjectgo){UIEventListenerlistener =go.GetComponent
();if(listener== null)listener =go.AddComponent
();returnlistener;}}

 

 

转载于:https://www.cnblogs.com/lexiaoyao-jun/p/5208224.html

你可能感兴趣的文章
数据库优化分析
查看>>
group by with rollup
查看>>
HashMap根据value删除元素
查看>>
CentOS7上快速搭建LAMP环境
查看>>
两种分布式锁实现方案(一)
查看>>
corosync+pacemaker+crmsh+DRBD实现数据库服务器高可用集群构建
查看>>
spanning-tree vlan 1 root primary/secondary实验
查看>>
加班之我见
查看>>
VCL 中的 Windows API 函数(4): AdjustWindowRectEx
查看>>
Windows 单元下的公用函数目录(A-F)
查看>>
python 安装easy_install和pip
查看>>
XML数据结构简介
查看>>
Netty Client使用域名重连的问题
查看>>
Dell Error Code for Failed Hard Disk
查看>>
Daniel Jakobi:声音改变世界
查看>>
基于SDN和NFV的下一代网络
查看>>
阿里流控中间件sentinel的思考,主要分析下hytrix的优势
查看>>
HGPageScrollView
查看>>
CentOS下配置subversion遇到的问题和解决
查看>>
FreeCMS部署到子目录首页乱了怎么办?
查看>>