【 unity3d 】NGUI点击按钮显示窗口功能(激活背景Sprite)

需要的功能,点击按钮,显示窗口

扩展功能:点击按钮,显示新窗口,有不同的窗口时就要关闭掉这个不同的旧窗口,打开新的窗口

一:制作3个按钮

1、制作一个菜单栏

里面包好三个按钮,这里用了Panel,Grid,以及3个空物体,里面对应的3个图片Sprite

 

2、分别制作这3个按钮,使其具有点击功能(加上碰撞盒子,UIButton组件)拖入子对象给Tween Target


二:制作3个对应的按钮窗口

1、这三个窗口实际只是3个背景图片,一个Panel包含3个ScrollView,每个ScrollView分别有一个spite作背景


2、该窗口可以做成重合状态,然后取消激活状态待用


三:脚本代码实现功能

1、回顾需求,需要一个点击按钮,就弹出对应的一个窗口。

2、因此需要点击按钮,获取按钮信息,然后把这个信息传递给对应窗口,使窗口进入激活状态(打开窗口)。

3、扩展功能: 当一个窗口已经激活,再点击其他的一个按钮,当前窗口要设置不激活(关闭旧窗口),激活新窗口(打开新窗口)

4、设置监听方法,点击相应的按钮后调用Onclick方法


5、设置按钮对应窗口的Tag编号 0 ,1 ,2作为标记



6、代码编写

using UnityEngine;
using System.Collections;

public class WinContrlSC : MonoBehaviour {

	public GameObject[] _winGroup;

	GameObject _currentWin;
	GameObject _preWin;


	void Start () {
		readyUIEventList ();
	}


	void Update () {
	
	}

	void readyUIEventList(){
		GameObject friendButton = GameObject.Find ("Friend");
		GameObject skillButton = GameObject.Find ("Skill");
		GameObject bagButton = GameObject.Find ("Bag");

		UIEventListener.Get (friendButton).onClick = buttonClick;
		UIEventListener.Get (skillButton).onClick = buttonClick;
		UIEventListener.Get (bagButton).onClick = buttonClick;
	}
		
	void buttonClick(GameObject go) {
		openWindow (go);
	}

	void openWindow(GameObject go) {
		_currentWin = _winGroup[int.Parse (go.tag)];
		//当前有该窗口,就关闭
		if (_currentWin.activeInHierarchy) {
			_currentWin.SetActive (false);
		} else {
			//当前没有该窗口,就打开, 并且看以前的窗口是否为打开状态(打开了就关闭)
			_currentWin.SetActive (true);
			if (_preWin != _currentWin) {
				if (_preWin != null && _preWin.activeInHierarchy) {
					_preWin.SetActive (false);
				}
			}
			_preWin = _currentWin;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/liaoshengg/article/details/80826374
今日推荐