Unity 音效管理

创建一个音效管理脚本, 把想要播放的音效放在Resources目录下,需要播放的时候一行代码就可以搞定

话不多说,看脚本

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

public class AudioSourceController
{

    //此脚本不需要继承MonoBehaviour   

    
    public static Dictionary<string, AudioClip> audioDic = new Dictionary<string, AudioClip>();


    /// <summary>
    /// 需要播放某个音效的时候需要调用此方法就可以了
    /// </summary>
    /// <param name="dir">这是你音效的路径, 必须在Resources目录下</param>
    /// <param name="name">音效的名称</param>
    public static void PlaySnd(string dir, string name)
    {

        AudioClip clip = LoadClip(dir, name.ToLower());
        if (clip != null)
            AudioSource.PlayClipAtPoint(clip, Vector3.zero);   //Vector3.zero 是播放音乐的位置(0,0,0)
        else                                                   // 如果主摄像机离这个位置远的话会出现声音小或者听不见的情况
            Debug.LogError("Clip is Missing" + name);
    }
    public static AudioClip LoadClip(string dir, string name)
    {
        if (!audioDic.ContainsKey(name))
        {
            string dirMusic = dir + "/" + name;
            AudioClip clip = Resources.Load(dirMusic) as AudioClip;
            if (clip != null)
                audioDic.Add(clip.name, clip);
        }
        return audioDic[name];
    }

    //调用测试
    private void AudioSourceShow()
    {

        //在其他类里面调用的时候只需要类名点这个静态方法
        //如我目前的音乐文件放在(Resources/Muisc)目录下,文件名为OnClick,
        AudioSourceController.PlaySnd("Music", "OnClick");  //(此音效播放完会自动删除)
    }

}


发布了41 篇原创文章 · 获赞 36 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/yzx5452830/article/details/77855056