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。

二、添加脚本

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,测试一下,可以玩耍了。

时间: 2024-11-05 20:43:57

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

ugui使用代码动态添加Button.OnClick()事件

using UnityEngine;using UnityEngine.UI;using System.Collections;using UnityEngine.Events;using System.Collections.Generic; public class PersonalInformation : MonoBehaviour{ void Start()    {        List<string> BtnsName = new List<string>();  

Unity3d代码添加button.OnClick()事件的方法

using UnityEngine; using System.Collections; using UnityEngine.UI; public class MyTest : MonoBehaviour { public Transform[] myBtn; //对应的Button按钮数组 void Start() { Button btn; for (int i = 0; i < myBtn.Length; i++) { btn = myBtn[i].GetComponent<Button

2DSprite添加Light照射(Unity3D开发之十六)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/45534245 今天项目中需要用到黑夜灯光照射,由于普通的2DSprite使用的材质是不接收光反射的.所以我们必须修改Sprite Renderer的材质. 第一步,建立工程 下面是我建立的工程,你会发现Point light对2DSprite没有产生任何作用. 第二步,修改Sprite Material, 让其

jQuery动态添加的节点事件无法触发

添加节点之前如图: 点击图中的 "第一个" 之后会触发click事件,效果如图: 点击按钮的之后,添加节点之后如图: 这时点击图中的 "第一个",却不会触发click事件. 此时代码如下: <!DOCTYPE html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <html> <head&

New UI-Java代码动态添加控件或xml布局

New UI-Java代码动态添加控件或xml布局  --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目录:http://blog.

ext:TreePanel 动态添加和单击事件

<ext:TreePanel ID="UserTreePanel" runat="server" Title="用户结构图" AutoHeight="true" Border="false"> <Listeners> <BeforeLoad Fn="nodeLoad" /> <Click Handler="clickTree1(node

代码动态添加ViewPager时出错

当我们在项目中使用java代码动态添加ViewPager时,需要注意一点:必须调用setId()方法为ViewPager设置一个ID. *.在xml布局中加入ViewPager时,我们一般会为ViewPager指定一个ID,因为当我们往这个控件中加入内容时,需要根据这个ID值来找到Viewpager. *.如果我们不使用xml布局文件,而是用java代码添加ViewPager.从原理上看,对于简单的添加控件,java代码可以替换为相应的xml布局,所以在动态添加时设置ID.

UGUI 代码 动态添加 Event Trigger 的事件

Additionally, if you need more than just the events provided by default, I'd suggest instead attaching a EventTrigger to your game object. This gives us access to the BaseEventData object returned from the event, telling us stuff like the object that

Unity3d开发(十九)调整SortingOrder解决UGUI中粒子层级问题

为了做出更酷炫的的UI效果,通常要在UI中加入粒子效果.但与纯2D的UI动画或Spine不同,粒子在场景中制作,会存在与UI的穿插问题.本文探讨如何更改特效或UI的SortingOrder避免穿插. 前提条件 首先,Canvas的类型是一切的基础,我使用的Canvas是Screen-Space ,所有UI通过一个正交摄像机照出来.制作UI通常使用这种模式,本文不讨论其他情况. 核心原理 通过更改渲染的顺序来改变遮挡关系.一方面UGUI会根据Hierarchy中的控件顺序进行排序.因此对于Anim