uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)

猴子原创,欢迎转载。转载请注明: 转载自Cocos2Der-CSDN,谢谢!

原文地址: http://blog.csdn.net/cocos2der/article/details/42705885

uGUI出来这么久了,也一直没好好用用,主要是公司项目不用U3D。昨晚用了下Button,还是比较爽的。

主要说下用代码添加button.OnClick()事件的方法(使用属性面板添加的方法就不说了)

一、创建2D UI Panel,添加你需要的Button。

我添加了3个Button:BtnStart,BtnShop,BtnLeaderboards。

uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)_第1张图片

二、添加脚本

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 btnsName = new List();
		btnsName.Add("BtnPlay");
		btnsName.Add("BtnShop");
		btnsName.Add("BtnLeaderboards");

		foreach(string btnName in btnsName)
		{
			GameObject btnObj = GameObject.Find(btnName);
			Button btn = btnObj.GetComponent

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

================== 2016-07-19 更新 ======================

我现在的做法是有一个BaseUIView,会在这里统一注册button事件,然后子类自己实现OnClickButtons函数。

当然,BaseUIView中还可以做些UI的显示和影藏的事件,然后配合UIManager使用来管理UI的显示层级问题。


// 绑定buttons event
Button[] buttons = GetComponentsInChildren



你可能感兴趣的:(Unity3D,Unity3D游戏开发,unity3d,uGUI,Button,Toggle)