14.确定退出界面

14.游戏场景-确定退出界面


14.1 知识点

查看确定退出界面演示和所需要的控件

创建确定退出面板控件,添加半透明背景,背景,标题,确认和取消按钮这几个控件。检查分辨率自适应和DrawCall。

创建QuitPanel脚本,继承基类面板。创建确认按钮和关闭按钮变量,添加监听事件,挂载到退出面板控件并关联对应控件。

public class QuitPanel : BasePanel<QuitPanel>
{
    public UIButton btnSure; // 确定按钮
    public UIButton btnClose; // 关闭按钮
    
    public override void Init()
    {
        btnSure.onClick.Add(new EventDelegate(() => {
            //确定退出
            SceneManager.LoadScene("BeginScene"); // 加载开始场景
        }));
        
        btnClose.onClick.Add(new EventDelegate(() => {
            //直接关闭该面板
            HideMe(); // 隐藏面板
        }));
        
        HideMe(); // 初始化时隐藏面板
    }
}

在GamePanel脚本中,添加返回按钮点击后打开确认退出面板的逻辑

//游戏面板的返回按钮点击
btnBack.onClick.Add(new EventDelegate(() =>
{
    //点击 退出按钮后 
    //显示 确定退出面板
    QuitPanel.Instance.ShowMe(); // 显示退出面板
}));

14.2 知识点代码

QuitPanel

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class QuitPanel : BasePanel<QuitPanel>
{
    public UIButton btnSure; // 确定按钮
    public UIButton btnClose; // 关闭按钮

    public override void Init()
    {
        btnSure.onClick.Add(new EventDelegate(() => {
            //确定退出
            SceneManager.LoadScene("BeginScene"); // 加载开始场景
        }));

        btnClose.onClick.Add(new EventDelegate(() => {
            //直接关闭该面板
            HideMe(); // 隐藏面板
        }));

        HideMe(); // 初始化时隐藏面板
    }
}

GamePanel

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GamePanel : BasePanel<GamePanel>
{
    public UIButton btnBack; // 返回按钮
    public UILabel labTime; // 时间标签

    public List<GameObject> hpObjs; // 血量对象列表

    //当前游戏运行的时间
    public float nowTime = 0; // 当前游戏运行时间

    public override void Init()
    {
        //游戏面板的返回按钮点击
        btnBack.onClick.Add(new EventDelegate(() =>
        {
            //点击 退出按钮后 
            //显示 确定退出面板
            QuitPanel.Instance.ShowMe(); // 显示退出面板
        }));

        ChangeHp(5); // 改变血量
    }

    /// <summary>
    /// 提供给外部 改变血量的 方法
    /// </summary>
    /// <param name="hp"></param>
    public void ChangeHp(int hp)
    {
        for (int i = 0; i < hpObjs.Count; i++)
        {
            hpObjs[i].SetActive(i < hp); // 设置血量对象的激活状态
        }
    }

    private void Update()
    {
        nowTime += Time.deltaTime; // 更新当前游戏运行时间
        //更新时间显示
        labTime.text = "";

        //时(小时)
        if ((int)nowTime / 3600 > 0)
            labTime.text += (int)nowTime / 3600 + "h";
        //分
        if ((int)nowTime % 3600 / 60 > 0 || labTime.text != "")
            labTime.text += (int)nowTime % 3600 / 60 + "m";
        //秒
        labTime.text += (int)nowTime % 60 + "s";
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏