找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
游戏黄埔已经开课啦,大家速速报名赶快上车
查看: 2291|回复: 1

AudioManager自做插件代码资源

[复制链接]

162

主题

33

回帖

891

积分

管理员

积分
891
发表于 2025-1-14 13:01:35 | 显示全部楼层 |阅读模式
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;

  4. public class AudioManager : MonoBehaviour
  5. {
  6.     public static AudioManager instance;
  7.     public AudioClip bgm;//游戏背景音乐
  8.     public AudioClip se1;//游戏音效1
  9.     public AudioClip se2;//游戏音效2
  10.     public AudioClip se3;//游戏音效3
  11.     public int audioSourceCount=3;//音轨的数量
  12.     public List<AudioSource> audios = new List<AudioSource>();//将AudioSource组件声明为集合
  13.     // Start is called before the first frame update
  14.     void Start()
  15.     {
  16.         //将默认audioSourceCoun数量的Audio Source组件添加到脚本所挂载的对象上
  17.         for (int i = 0; i < audioSourceCount; i++)
  18.         {
  19.             //AddComponent<AudioSource>();方法会在脚本所挂载的对象上添加
  20.             //一个AudioSource组件,并且会返回所添加的AudioSource组件作为返回值
  21.             AudioSource audio =this.gameObject.AddComponent<AudioSource>();
  22.             audios.Add(audio);
  23.         }
  24.         instance = this;
  25.     }
  26.     //在Resource内动态加载
  27.     public void PlayByLoadResources(int index,bool isLoop,string path)
  28.     {
  29.         var audioClip = Resources.Load<AudioClip>(path);
  30.         audios[index].clip = audioClip;
  31.         audios[index].loop = isLoop;
  32.         audios[index].Play();
  33.     }
  34.     //在内存中加载
  35.     public void PlayByMemory(int index, string name, bool isLoop)
  36.     {
  37.         var clip = GetAudioClip(name);
  38.         if (clip != null)
  39.         {
  40.             audios[index].clip = clip;
  41.             audios[index].loop = isLoop;
  42.             audios[index].Play();
  43.         }
  44.         else
  45.         {
  46.             Debug.Log("AudioManager类中的PlayByMemory中传入的名称没有找到对应的" +
  47.                 "bgm,se1,se2,se3的字符串名称,造成" +
  48.                 "clip为空");
  49.         }
  50.     }
  51.     //停止播放
  52.     public void Stop(int index)
  53.     {
  54.         audios[index].Stop();
  55.     }
  56.     AudioClip GetAudioClip(string name)
  57.     {
  58.         switch (name)
  59.         {
  60.             case "bgm":
  61.                 return bgm;
  62.             case "se1":
  63.                 return se1;
  64.             case "se2":
  65.                 return se2;
  66.             case "se3":
  67.                 return se3;
  68.         }
  69.         return null;
  70.     }
  71.    
  72. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

162

主题

33

回帖

891

积分

管理员

积分
891
 楼主| 发表于 2025-1-14 14:26:10 | 显示全部楼层
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;

  4. public class AudioManager : MonoBehaviour
  5. {
  6.     public AudioClip bgm;
  7.     public AudioClip se1;
  8.     public AudioClip se2;
  9.     public AudioClip se3;
  10.     public static AudioManager instance;//单例,必须全局唯一时才能这样写
  11.     //生命三条音轨
  12.     public int audioSourceCount = 3;
  13.     public List<AudioSource>audios = new List<AudioSource>();//集合


  14.     private void Start()
  15.     {
  16.         instance = this;
  17.         for (int i = 0; i < audioSourceCount; i++)
  18.         {
  19.             AudioSource audio=this.gameObject.AddComponent<AudioSource>();//添加组件
  20.             audios.Add(audio);
  21.         }
  22.     }
  23.     //1第一种播放方式:在Resources文件夹内动态加载(硬盘里面加载)
  24.     public void PlayByResources(int index,string path,bool loop)
  25.     {
  26.         AudioClip clip = Resources.Load<AudioClip>(path);
  27.         audios[index].clip = clip;
  28.         audios[index].loop = loop;
  29.         audios[index].Play();
  30.     }
  31.     //2第二种播放方式:是将需要播放的音频文件存在变量里,使用内存进行加载;
  32.     public void PlayByMemory(int index,string name,bool loop)
  33.     {
  34.         AudioClip clip =GetAudioClip(name);
  35.         if (clip!=null)
  36.         {
  37.             audios[index].clip = clip;
  38.             audios[index].loop = loop;
  39.             audios[index].Play();
  40.         }

  41.     }
  42.     public void Stop(int index)
  43.     {
  44.         audios[index].Stop();
  45.     }

  46.     public AudioClip GetAudioClip(string name)
  47.     {
  48.         switch (name)
  49.         {

  50.             case "bgm":
  51.                 return bgm;
  52.             case "se1":
  53.                 return se1;
  54.             case "se2":
  55.                 return se2;
  56.             case "se3":
  57.                 return se3;

  58.         }
  59.         return null;
  60.     }
  61. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|平顶山市图灵科技 ( 豫ICP备2024088136号-1| 豫公网安备41040202000275号 )

GMT+8, 2025-5-23 05:59 , Processed in 0.043032 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表