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