uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)
2015-01-14 11:24
591 查看
猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢!
原文地址: http://blog.csdn.net/cocos2der/article/details/42705885
uGUI出来这么久了,也一直没好好用用,主要是公司项目不用U3D。昨晚用了下Button,还是比较爽的。
主要说下用代码添加button.OnClick()事件的方法(使用属性面板添加的方法就不说了)
一、创建2D UI Panel,添加你需要的Button。
我添加了3个Button:BtnStart,BtnShop,BtnLeaderboards。
二、添加脚本
ok,测试一下,可以玩耍了。
================== 2015-03-07 更新 ======================
有人问道如果是Toogle如果添加呢?其实很简单的。
================== 2016-07-19 更新 ======================
我现在的做法是有一个BaseUIView,会在这里统一注册button事件,然后子类自己实现OnClickButtons函数。
当然,BaseUIView中还可以做些UI的显示和影藏的事件,然后配合UIManager使用来管理UI的显示层级问题。
原文地址: http://blog.csdn.net/cocos2der/article/details/42705885
uGUI出来这么久了,也一直没好好用用,主要是公司项目不用U3D。昨晚用了下Button,还是比较爽的。
主要说下用代码添加button.OnClick()事件的方法(使用属性面板添加的方法就不说了)
一、创建2D UI Panel,添加你需要的Button。
我添加了3个Button:BtnStart,BtnShop,BtnLeaderboards。
二、添加脚本
using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.Events; using UnityEngine.UI; public class MainMenu : MonoBehaviour { // Use this for initialization void Start () { List<string> btnsName = new List<string>(); btnsName.Add("BtnPlay"); btnsName.Add("BtnShop"); btnsName.Add("BtnLeaderboards"); foreach(string btnName in btnsName) { GameObject btnObj = GameObject.Find(btnName); Button btn = btnObj.GetComponent<Button>(); btn.onClick.AddListener(delegate() { this.OnClick(btnObj); }); } } public void OnClick(GameObject sender) { switch (sender.name) { case "BtnPlay": Debug.Log("BtnPlay"); break; case "BtnShop": Debug.Log("BtnShop"); break; case "BtnLeaderboards": Debug.Log("BtnLeaderboards"); break; default: Debug.Log("none"); break; } } // Update is called once per frame void Update () { } }
ok,测试一下,可以玩耍了。
================== 2015-03-07 更新 ======================
有人问道如果是Toogle如果添加呢?其实很简单的。
// Add click listenner for buttons Hashtable btnsName = new Hashtable(); btnsName.Add("BtnNewGame", "Button"); btnsName.Add("BtnContinue", "Button"); btnsName.Add("BtnChallenge", "Button"); btnsName.Add("BtnMoreGame", "Button"); btnsName.Add("BtnRank", "Button"); btnsName.Add("BtnMusic", "Toggle"); btnsName.Add("BtnSound", "Toggle"); foreach(DictionaryEntry btnInfo in btnsName) { GameObject btnObj = GameObject.Find(btnInfo.Key as string); if (btnInfo.Value == "Button") { Button btn = btnObj.GetComponent<Button>(); btn.onClick.AddListener(delegate() { // this.OnClick(btnObj); }); } else if (btnInfo.Value == "Toggle") { Toggle btn = btnObj.GetComponent<Toggle>(); btn.onValueChanged.AddListener(delegate(bool isOn) { // this.OnValueChanged(isOn, btnObj); }); } }
================== 2016-07-19 更新 ======================
我现在的做法是有一个BaseUIView,会在这里统一注册button事件,然后子类自己实现OnClickButtons函数。
当然,BaseUIView中还可以做些UI的显示和影藏的事件,然后配合UIManager使用来管理UI的显示层级问题。
// 绑定buttons event Button[] buttons = GetComponentsInChildren<Button> (true); foreach (var item in buttons) { Button btn = item; btn.onClick.AddListener(delegate() { this.OnClickButtons(btn.gameObject); }); } // button actions protected abstract void OnClickButtons(GameObject sender);
相关文章推荐
- uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)
- uGUI使用代码动态添加Button.OnClick()事件
- uGUI使用代码动态添加Button.OnClick()事件
- ugui使用代码动态添加Button.OnClick()事件
- unity3D 在UGUI中动态添加button的监听事件
- Unity UGUI 动态添加Button.OnClick()事件
- Android开发中button按钮的使用及动态添加组件方法示例
- 【Unity】UGUI怎么动态的添加按钮的OnClick点击事件
- unity3d canvas button 代码添加鼠标单击/触摸单击触发事件
- 使用js动态添加点击事件时,click与onclick的区别
- 使用javascript动态添加onclick事件
- 使用js动态添加点击事件时,click与onclick的区别
- UGUI中使用代码动态绑定触发事件
- 怎样用后台代码添加Button的OnClick事件
- 使用jQuery的.on()为程序动态添加的代码添加事件
- 使用javascript动态添加onclick事件,
- iOS开发封装带有Button的UIView控件,使用代理给button添加点击事件
- Unity3d 使用UGUI实现button其他事件处理
- iOS开发封装带有Button的UIView控件,使用target-action模式给button添加点击事件
- UGUI代码添加带参数的Button事件