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; } }