需要的功能,点击按钮,显示窗口
扩展功能:点击按钮,显示新窗口,有不同的窗口时就要关闭掉这个不同的旧窗口,打开新的窗口
一:制作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;
}
}
}