9.设置界面

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

×

喜欢就点赞,疼爱就打赏