需要组件:Panel、Sprite、Label、BoxCollider以及自定义的PopupWindowHandle.cs脚本组件。
实现方法:
1.制作按钮,用来控制弹窗
1)添加一个Sprite,命名为PopupWindowBtn,向其添加BoxCollider组件,以及PopupWindowHandle脚本组件,并为其添加子对象Label,以此设置其按钮上显示的名称。
2)PopupWindowHandle.cs代码如下:
usingUnityEngine; using System.Collections; publicclass PopupWindowHandle : MonoBehaviour { //需要弹出的面板GameObject public GameObject windowPanel; //用来控制弹出的按钮GameObject public GameObject btnLabelGO; //控制面板弹出弹回所用的时间 public float duration; //判断面板当前弹出状态 private bool isOpened = false; //获得按钮的Label private UILabel btnLabel; void Start() { //设置面板初始大小缩小至0 windowPanel.transform.localScale =Vector3.zero; //获得按钮的Label,以便于对应面板不同的状态,显示不同的提示 btnLabel = btnLabelGO.transform.GetComponent<UILabel>(); } public void PopupBtnOnClick() { //如果面板处于弹出状态 if(isOpened) { //设置面板大小缩小至0 TweenScale.Begin(windowPanel,duration, Vector3.zero); //设置面板透明度至0 TweenAlpha.Begin(windowPanel,duration, 0); //设置按钮的Label为"Open" btnLabel.text = "Open"; } else //如果面板处于隐藏状态 { //设置面板大小放大至1 TweenScale.Begin(windowPanel,duration, Vector3.one); //设置面板透明度至1 TweenAlpha.Begin(windowPanel,duration, 1); //设置按钮的Label为"Close" btnLabel.text = "Close"; } //每次按下按钮反置面板的弹出状态 isOpened = !isOpened; } }
3)设置按钮Inspector如图1所示:
2.制作面板,用来展示弹窗的弹出及隐藏
1)添加Panel
2)在Panel添加自定义的背景或者文字,此处为了显示效果,展示简单添加了一个Sprite和Label
3.Hierarchy面板的截图如图2所示。
4.运行后场景中截图如图3所示。
5.效果实现。