1,button的建立;2,button組件的基本屬性;3,button的事件監聽c#
原位地址:http://blog.csdn.net/dingkun520wy/article/details/50434520編輯器
1,button的建立ide
編輯器建立spa
代碼建立.net
/// <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組件的基本屬性code
按鈕用到的UISprite對象
按鈕的響應範圍blog
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; } }