Unity进阶--声音管理器学习笔记

文章目录

  • 声音管理器
csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioManager : MyrSingletonBase<AudioManager>
{
    //环境音
    private AudioSource enPlayer;
    //音效
    private AudioSource sePlayer;
    //音乐
    private AudioSource Player;

    void Start() {
        //初始化
        Player = gameObject.AddComponent<AudioSource>();
        Player.loop = true;
        sePlayer = gameObject.AddComponent<AudioSource>();
        enPlayer = gameObject.AddComponent<AudioSource>();
        GameObject.DontDestroyOnLoad(gameObject);
    }

#region 声音部分
    //通过文件名找到对应音频,并播放
    public void PlayMusic(string name, float volume = 1){
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlayMusic(clip, volume);
    }

    public void PlayMusic(AudioClip clip, float volume = 1){
        if (Player.isPlaying) {
            Player.Stop();
        }
        //音量大小
        Player.volume = volume;
        Player.clip = clip;
        Player.Play();
    }
    
    public void StopMusic() {
        Player.Stop();
    }

    //改变声音
    public void ChangeMusicVolume(float volume) {
        Player.volume = volume;
    }
#endregion

#region 环境音部分
    //播放环境音
    public void PlayEnMusic(string name, float volume = 1){
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlayEnMusic(clip, volume);
    }

    public void PlayEnMusic(AudioClip clip, float volume = 1){
        if (enPlayer.isPlaying) {
            enPlayer.Stop();
        }
        //音量大小
        enPlayer.volume = volume;
        enPlayer.clip = clip;
        enPlayer.Play();
    }
    
    //停止环境音
    public void StopEnMusic() {
        enPlayer.Stop();
    }

    public void ChangeEnMusicVolume(float volume) {
        enPlayer.volume = volume;
    }
#endregion

#region 音效部分
    public void PlaySeMusic(string name, float volume = 1){
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlaySeMusic(clip, volume);
    }

    public void PlaySeMusic(AudioClip clip, float volume = 1){
        sePlayer.PlayOneShot(clip, volume);
    }
#endregion

#region 环绕物体音
    public void PlaySeSoundOnObject(string name, GameObject go, float volume = 1){
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlaySeSoundOnObject(clip, go, volume);
    }

    public void PlaySeSoundOnObject(AudioClip clip, GameObject go, float volume = 1){
        AudioSource player =go.GetComponent<AudioSource>();
        if(player == null) {
            player = go.AddComponent<AudioSource>();
        }
        player.volume = volume;
        player.PlayOneShot(clip);
    }
#endregion
}
  • 放进总管理器里

    csharp 复制代码
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Managers
    {
       //声音管理器
       public static AudioManager m_Audio = AudioManager.Instance;
    }

建个Resources文件夹把声音放进去就可以使用了。

相关推荐
MYX_30913 分钟前
第四章 神经网络的基本组件
pytorch·深度学习·神经网络·学习
985小水博一枚呀38 分钟前
【AI大模型学习路线】第三阶段之RAG与LangChain——第十九章(实战基于Advanced RAG的PDF问答)系统部署与测试?
人工智能·学习·langchain·pdf
蓝桉~MLGT2 小时前
Python学习历程——字符串相关操作及正则表达式
python·学习·正则表达式
能不能别报错2 小时前
K8s学习笔记(二十一) RBAC
笔记·学习·kubernetes
Lynnxiaowen2 小时前
今天我们继续学习python3编程之python基础
linux·运维·python·学习
hour_go2 小时前
Linux Shell 实验一:数据采集与脚本调试错误总结
linux·笔记·bash·shell·实验报告·错误排查
励志成为美貌才华为一体的女子3 小时前
本地用docling实现pdf转markdown操作笔记
笔记·pdf
患得患失9493 小时前
【Turborepo】【Next】 Turborepo + Next.js 前后端精简搭建笔记(带官网)
开发语言·javascript·笔记
Nix Lockhart3 小时前
《算法与数据结构》第七章[算法4]:最短路径
c语言·数据结构·学习·算法·图论
阿部多瑞 ABU3 小时前
技术报告:高仿真虚构内容对主流大模型的现实感幻觉测试
人工智能·经验分享·笔记·学习·ai写作