unity——Prejct3——背景音乐

1.音乐数据结构类

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//音乐数据结构类
public class MusicData 
{
    //背景音乐 音效 开关
    public bool musicOpen = true;
    public bool soundOpen = true;

    //背景音乐 音效 大小
    public float musicValue = 0.2f;
    public float soundValue = 0.2f;
}

2.数据管理类

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 数据管理类
public class GameDataMgr
{
    private static GameDataMgr instance = new GameDataMgr();

    public static GameDataMgr Instance => instance;

    //音乐 音效 相关数据
    public MusicData musicData;

    private GameDataMgr()
    {
        //初始化默认数据 如果第一次进入游戏 Json会直接默认数据
        musicData = JsonMgr.Instance.LoadData<MusicData>("MusicData");
    }

    /// <summary>
    /// 存储音乐 音效数据
    /// </summary>
    public void SaveMusicData()
    {
        JsonMgr.Instance.SaveData(musicData, "MusicData");
    }
}

3.真实背景音乐类

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BKMusic : MonoBehaviour
{
    private static BKMusic instance;
    public static BKMusic Instance => instance;

    private AudioSource bkSource;

    // Start is called before the first frame update
    void Awake()
    {
        instance = this;
        bkSource = this.GetComponent<AudioSource>();

        //通过真正的音乐数据来设置背景音乐的数据
        MusicData data = JsonMgr.Instance.LoadData<MusicData>("MusicData");

        SetIsOpen(data.musicOpen);
        ChangeValue(data.musicValue);
    }

    //开关背景音乐
    public void SetIsOpen(bool isOpen)
    {
        bkSource.mute = !isOpen;
    }

    //调整背景音乐大小
    public void ChangeValue(float v)
    {
        bkSource.volume = v;
    }
}
相关推荐
JAVA面经实录91714 小时前
Java企业级工程化·终极完整版背诵手册(无遗漏、全覆盖、面试+落地通用)
java·开发语言·面试
周杰伦fans15 小时前
AutoCAD .NET 二次开发:深入理解 EntityJig 的工作原理与正确实现
开发语言·.net
郑寿昌15 小时前
UE5与UE6在Lumen和Nanite的差异解析
游戏引擎·图形渲染·着色器
许彰午16 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
Bat U17 小时前
JavaEE|多线程初阶(七)
java·开发语言
谭欣辰17 小时前
C++ 排列组合完整指南
开发语言·c++·算法
foundbug99918 小时前
自适应滤除直达波干扰的MATLAB实现
开发语言·算法·matlab
XDH_CS18 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql
小短腿的代码世界18 小时前
Qt实时盈亏计算深度解析:从持仓数据到动态盈亏展示
开发语言·qt