美文网首页
音效管理器

音效管理器

作者: Kyle_An | 来源:发表于2017-10-22 18:45 被阅读0次

一、首先把准备好的资源放到了 Resouces的Audios文件夹下,方便动态加载。


Paste_Image.png

二、之后,在场景中建了一个空物体当做管理音乐的控制器,将背景音乐和音效统一管理起来


Paste_Image.png
这里一定是两个AudioSource,一个用来播放背景音乐,一个用来播放音效,通常背景音乐用一个就可以了,音效是一直要变换的
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 挂载:脚本挂载到了空物体上面
/// 思路:
/// 先加载本地的音频文件放到数组里面
/// 然后将数组里面的元素存放到字典里面
/// 播放哪个音频的时候再通过元素的名字查找相对应的音频文件
/// </summary>
public class SoundManager : MonoBehaviour
{
    //------------------------------//
    /// <summary>
    /// 单例模式
    /// </summary>
    public static SoundManager instance = new SoundManager();
    private SoundManager()
    {

    }

    /// <summary>
    /// 将声音放入字典中,方便管理
    /// </summary>
    private Dictionary<string, AudioClip> _soundDictionary;
    //AudioSource组件
    private AudioSource[] audioSources;
    //声音数组
    AudioClip[] audioArray;

    private AudioSource bgAudioSource;
    private AudioSource audioSourceEffect;

    void Awake()
    {
        instance = this;
        _soundDictionary = new Dictionary<string, AudioClip>();
        //本地加载 
        audioArray = Resources.LoadAll<AudioClip>("Audios");

        audioSources = GetComponents<AudioSource>();
        bgAudioSource = audioSources[0];
        audioSourceEffect = audioSources[1];

        //存放到字典
        foreach (AudioClip item in audioArray)
        {
            _soundDictionary.Add(item.name, item);
        }
    }


    //播放背景音乐
    public void PlayBGaudio(string audioName)
    {
        if (_soundDictionary.ContainsKey(audioName))
        {
            bgAudioSource.clip = _soundDictionary[audioName];
            bgAudioSource.Play();
        }
    }
    //播放音效
    public void PlayAudioEffect(string audioEffectName)
    {
        if (_soundDictionary.ContainsKey(audioEffectName))
        {
            audioSourceEffect.clip = _soundDictionary[audioEffectName];
            audioSourceEffect.Play();
        }
    }
}

音效是一直在场景中不消失的,所以要保证切换场景的时候资源不会删除。

//=============================================//
    static bool isHaveAudio=false ;
    public GameObject tempGameObject;
    //=============================================//
    //不销毁音效
    void Start()
    {
        if (!isHaveAudio) 
        {
            tempGameObject=Instantiate(Resources.Load("SoundManage"))as GameObject;
            isHaveAudio=true ;
        }
        DontDestroyOnLoad (tempGameObject);
    }

使用:先执行加载预设(Start())脚本。
SoundManage是个预设,预设绑定SoundManager.cs脚本。

相关文章

  • 音效管理器

    一、首先把准备好的资源放到了 Resouces的Audios文件夹下,方便动态加载。 二、之后,在场景中建了一个空...

  • 【Unity】音频管理器

    一个简单的音频管理器,可以播放bgm和音效,声音音量控制2022.6.10 更新随机播放,淡入淡出

  • 游戏CG音效制作技巧

    CG动画音效是游戏的宣传片、过场动画等电影化的音效,一个CG动画包括大量的人物行为音效、环境音效以及特效音效。 C...

  • 音效/音频播放

    // 1、创建音效对象 SystemSoundID audio = nil; // 2、初始化音效对象 获取音效文...

  • 音效 音乐

    播放音效 音效工具类 音乐

  • 狸猫换太子之更换音效

    关键词:Guitar Pro7,音效 一首优美的乐谱往往融合很多的音效,可能包括动物音效、人物音效等等,势必存在无...

  • 杜比音效那么爽,确定你的一加9pro手机不想试一试

    杜比音效,经常听人提起,无论车载、家庭影院、音箱等都有说有杜比音效。那么,究竟什么是杜比音效呢? 杜比音效即杜比定...

  • iOS开始之制作音乐播放器

    一、音频播放与音效播放的基础知识 音效播放 1、音效播放《1》功能介绍用于播放比较短小的音效 常用作系统的提示音...

  • 做视频设计岂能少的了这些音效网站

    做视频设计这个行业很苦逼的事,就是视频做完了,但音效总是找不到合适的。国内的音效网站音效又很少,即使有,音效种类也...

  • 有了声卡,却在"内放""混音&qu

    独立声卡发展至今,是很多直播,录音人的首选,因为声卡的音效丰富,在提升声音效果上可谓最佳外挂。 音效就是一种声音效...

网友评论

      本文标题:音效管理器

      本文链接:https://www.haomeiwen.com/subject/xdknuxtx.html