9.开始场景-设置界面
9.1 知识点
创建设置面板空物体,拼接控件
创建设置面板脚本,继承面板基类传入泛型,挂载到设置面板空物体上,声明开始面板中的公共的成员变量,拖拽赋值,之后会在Start内补充监听各个控件事件的逻辑
//设置面板
public class SettingPanel : BasePanel<SettingPanel>
{
//声明成员变量 关联控件
public CustomGUISlider sliderMusic;
public CustomGUISlider sliderSound;
public CustomGUIToggle togMusic;
public CustomGUIToggle togSound;
public CustomGUIButton btnClose;
void Start()
{
//监听对应的事件 处理逻辑
btnClose.clickEvent += () =>
{
//隐藏自己
HideMe();
//判断当前所在场景 应该如何判断
if(SceneManager.GetActiveScene().name == "BeginScene")
{
//让开始面板重新显示出来
BeginPanel.Instance.ShowMe();
}
};
//刚开始时隐藏自己
HideMe();
}
}
在开始面板添加点击打开设置面板的具体逻辑
btnSetting.clickEvent += () =>
{
//打开设置面板
SettingPanel.Instance.ShowMe();
//隐藏自己 避免穿透
HideMe();
};
9.2 知识点代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
//设置面板
public class SettingPanel : BasePanel<SettingPanel>
{
//声明成员变量 关联控件
public CustomGUISlider sliderMusic;
public CustomGUISlider sliderSound;
public CustomGUIToggle togMusic;
public CustomGUIToggle togSound;
public CustomGUIButton btnClose;
void Start()
{
//监听对应的事件 处理逻辑
//处理音乐的变化
sliderMusic.changeValue += (value) => GameDataMgr.Instance.ChangeBKValue(value);
//处理音效的变化
sliderSound.changeValue += (value) => GameDataMgr.Instance.ChangeSoundValue(value);
//处理音乐开关
togMusic.changeValue += (value) => GameDataMgr.Instance.OpenOrCloseBKMusic(value);
//处理音效开关
togSound.changeValue += (value) => GameDataMgr.Instance.OpenOrCloseSound(value);
//关闭按钮
btnClose.clickEvent += () =>
{
//隐藏自己
HideMe();
//判断当前所在场景 是开始场景才隐藏开始面板
if(SceneManager.GetActiveScene().name == "BeginScene")
{
//让开始面板重新显示出来
BeginPanel.Instance.ShowMe();
}
};
//刚开始时隐藏自己
HideMe();
}
//根据音效数据 刷新设置面板
public void UpdatePanelInfo()
{
//我们面板上的信息都是根据 音效数据 更新的
MusicData data = GameDataMgr.Instance.musicData;
//设置面板内容
sliderMusic.nowValue = data.bkValue;
sliderSound.nowValue = data.soundValue;
togMusic.isSel = data.isOpenBK;
togSound.isSel = data.isOpenSound;
}
public override void ShowMe()
{
base.ShowMe();
//每次显示 面板时 顺便 把面板上的内容也更新了
UpdatePanelInfo();
}
public override void HideMe()
{
base.HideMe();
Time.timeScale = 1;
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com