4.设置界面拼面板和逻辑

4.开始场景-设置界面-拼面板和基础逻辑


4.1 知识点

查看设置面板应该有的控件,注意应该有个半透明背景防止穿透点击。

创建设置面板控件。首先要添加一个半透明背景sprite,设置锚点全屏适配。注意半透明背景要添加碰撞器,才能防止穿透点击。

创建设置面板上的其他控件。包括设置标题文本,关闭按钮,两个拖动条,两个多选框,音乐和音效文本。注意要适配不同分辨率下的情况。检查DrawCall,把文本的层级调高让DrawCall变小。

创建设置界面SettingPanel 脚本继承面板基类挂载到设置面板控件,添加控件变量并关联。实现初始化方法,在初始化方法中添加各个控件的事件监听,包括两个拖动条和两个多选框的监听,很多事件监听待完善。重写显示和隐藏面板的方法,因为可能在显示的时候读取上次存储的拖动条和多选框数据,隐藏的时候存储拖动条和多选框数据,有了数据之后待完善。

public class SettingPanel : BasePanel<SettingPanel>
{
    public UIButton btnClose;

    public UISlider sliderMusic;
    public UISlider sliderSound;

    public UIToggle togMusic;
    public UIToggle togSound;

    public override void Init()
    {
        btnClose.onClick.Add(new EventDelegate(()=> {
            //隐藏自己
            HideMe();
        }));

        sliderMusic.onChange.Add(new EventDelegate(()=> {
            //改变音量大小 还要改变数据
        }));

        sliderSound.onChange.Add(new EventDelegate(() => {
            //改变音效大小 还要改变数据
        }));

        togMusic.onChange.Add(new EventDelegate(()=> {
            //背景音乐的开关
        }));

        togSound.onChange.Add(new EventDelegate(() => {
            //背景音乐的开关
        }));

        HideMe();
    }

    public override void ShowMe()
    {
        base.ShowMe();
        //显示自己时  更新上面的内容
       
    }

    public override void HideMe()
    {
        base.HideMe();
        //隐藏自己时 需要保存该次设置的数据
       
    }
}

在开始面板脚本中完善点击打开设置面板的监听。

//开始面板的设置按钮监听
btnSetting.onClick.Add(new EventDelegate(() => {
    //显示 设置面板
    SettingPanel.Instance.ShowMe();
}));

4.2 知识点代码

SettingPanel

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

public class SettingPanel : BasePanel<SettingPanel>
{
    public UIButton btnClose;

    public UISlider sliderMusic;
    public UISlider sliderSound;

    public UIToggle togMusic;
    public UIToggle togSound;

    public override void Init()
    {
        btnClose.onClick.Add(new EventDelegate(() =>
        {
            HideMe();
        }));

        sliderMusic.onChange.Add(new EventDelegate(() =>
        {
            //改变音量大小 还要改变数据
        }));

        sliderSound.onChange.Add(new EventDelegate(() =>
        {
            //改变音效大小 还要改变数据
        }));

        togMusic.onChange.Add(new EventDelegate(() =>
        {
            //背景音乐的开关
        }));

        togSound.onChange.Add(new EventDelegate(() =>
        {
            //背景音乐的开关
        }));

        HideMe();
    }

    public override void ShowMe()
    {
        base.ShowMe();
        //显示自己时  更新上面的内容
       
    }

    public override void HideMe()
    {
        base.HideMe();
        //隐藏自己时 需要保存该次设置的数据
        
    }
}

BeginPanel

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

/// <summary>
/// 开始界面
/// </summary>
public class BeginPanel : BasePanel<BeginPanel>
{
    public UIButton btnBegin;
    public UIButton btnRank;
    public UIButton btnSetting;
    public UIButton btnQuit;
    
    public override void Init()
    {
        //监听按钮事件
        btnBegin.onClick.Add(new EventDelegate(() =>
        {
            //显示 选角面板
            print("显示选角");
            //隐藏自己
            HideMe();
        }));

        btnRank.onClick.Add(new EventDelegate(() =>
        {
            //显示 排行榜
            print("显示排行榜");
        }));

        //开始面板的设置按钮监听
        btnSetting.onClick.Add(new EventDelegate(() =>
        {
            //显示 设置面板
            SettingPanel.Instance.ShowMe();
        }));

        btnQuit.onClick.Add(new EventDelegate(() =>
        {
            //退出游戏
            Application.Quit();
        }));
    }
}


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

×

喜欢就点赞,疼爱就打赏