首先这里我们只要把这个游戏管理器做成预制件,然后写一个通用模板类(包括关闭音乐和开启音乐,关闭音效和开启音效,和游戏存档来开启关闭音乐)挂在这个预制件上面。

通用模板类:

using UnityEngine;

using System.Collections;

public class AudioPlayer : MonoBehaviour{

static public AudioPlayer s_Instance = null;

static public bool IsRetargetOK=true;

//播放音效一次

static public void PlayAudioOnce(string name){

if (PlayerPrefs.HasKey("Audio") && PlayerPrefs.GetInt("Audio") == 0) {

return;

} //这里是存档来开启音乐

if (s_Instance != null){

AudioSource[] audioSource = s_Instance.gameObject.GetComponents<AudioSource>();

bool isPlayOk = true;

foreach (var item in audioSource){

if (item.clip != null && item.clip.name == name&&item.isPlaying){

isPlayOk = false;

break;

}

}

if (isPlayOk){

audioSource[s_Instance.currentAudioIndex].clip = Util.LoadResource<AudioClip>("Sounds/" + name + ".mp3");  //这里是加载你的游戏音乐,这里自己写了一个动态加载资源的办法,方便后面资源打包

audioSource[s_Instance.currentAudioIndex].Play();

s_Instance.currentAudioIndex++;

if (s_Instance.currentAudioIndex > AudioPlayer.kAudioCount){

s_Instance.currentAudioIndex = 1;

}

}else{

}

}

}

//播放音效

static public void PlayAudio(string name){

if (PlayerPrefs.HasKey("Audio") && PlayerPrefs.GetInt("Audio") == 0){

return;

}

if (s_Instance != null){

AudioSource[] audioSource = s_Instance.gameObject.GetComponents<AudioSource>();

audioSource[s_Instance.currentAudioIndex].clip = Util.LoadResource<AudioClip>("Sounds/" + name + ".mp3");

audioSource[s_Instance.currentAudioIndex].Play();

s_Instance.currentAudioIndex++;

if (s_Instance.currentAudioIndex > AudioPlayer.kAudioCount)

{

s_Instance.currentAudioIndex = 1;

}

}

}

//播放音乐

static public void PlayMusic(string name){

if (PlayerPrefs.HasKey("Music") && PlayerPrefs.GetInt("Music") == 0){

return;

}

if (s_Instance != null) {

AudioSource[] audioSource = s_Instance.gameObject.GetComponents<AudioSource>();

audioSource[0].clip = Util.LoadResource<AudioClip>("Sounds/" + name + ".mp3");

audioSource[0].Play();

}

}

//方便其他脚本调用这个播放音乐的方法

static public void PlayCurrentMusic(){

if (s_Instance != null) {

PlayMusic(s_Instance.MusicName);

}

}

//关闭音乐

static public void CloseMusic(){

if (s_Instance != null){

AudioSource[] audioSource = s_Instance.gameObject.GetComponents<AudioSource>();

audioSource[0].Stop();

}

}

private int currentAudioIndex = 1;

public const int kAudioCount = 31;

public string MusicName = "";

//单例模式

void Awake(){

s_Instance = this;

}

//游戏刚安装的时候一进来先播放音乐

void Start(){

AudioPlayer.PlayMusic(MusicName);

}

}

游戏存档代码:

using UnityEngine;

using System.Collections;

using System;

public class SetCanvas : MonoBehaviour

{

public GameObject BtONMusic;

public GameObject BtOFFMusic;

public GameObject BtONAudio;

public GameObject BtOFFAudio;

void Start()

{

if (PlayerPrefs.HasKey("Music") && PlayerPrefs.GetInt("Music") == 0)

{

BtOFFMusic.SetActive(true);

BtONMusic.SetActive(false);

}

else if (PlayerPrefs.HasKey("Music") && PlayerPrefs.GetInt("Music") == 1)

{

BtONMusic.SetActive(true);

BtOFFMusic.SetActive(false);

}

else

{

BtONMusic.SetActive(true);

BtOFFMusic.SetActive(false);

}

if (PlayerPrefs.HasKey("Audio") && PlayerPrefs.GetInt("Audio") == 0)

{

BtOFFAudio.SetActive(true);

BtONAudio.SetActive(false);

}

else if (PlayerPrefs.HasKey("Audio") && PlayerPrefs.GetInt("Audio") == 1)

{

BtOFFAudio.SetActive(false);

BtONAudio.SetActive(true);

}

else

{

BtONAudio.SetActive(true);

BtOFFAudio.SetActive(false);

}

}

public void CloseMusic()

{

PlayerPrefs.SetInt("Music", 0);

AudioPlayer.CloseMusic();

BtOFFMusic.SetActive(true);

BtONMusic.SetActive(false);

}

public void OpenMusic()

{

PlayerPrefs.SetInt("Music", 1);

AudioPlayer.PlayCurrentMusic();

BtOFFMusic.SetActive(false);

BtONMusic.SetActive(true);

}

public void CloseAudio()

{

PlayerPrefs.SetInt("Audio", 0);

BtOFFAudio.SetActive(true);

BtONAudio.SetActive(false);

}

public void OpenAudio()

{

PlayerPrefs.SetInt("Audio", 1);

BtOFFAudio.SetActive(false);

BtONAudio.SetActive(true);

}

public void ColseUI()

{

gameObject.SetActive(false);

}

}

现在任何地方想要关闭或者开启音乐音效的时候就可以调用这个游戏管理类里面的

AudioPlayer.PlayCurrentMusic();开启音乐

AudioPlayer.CloseMusic();关闭音乐

转载于:https://blog.51cto.com/5152481/1686345

Unity3d5.0之后关于游戏音乐的管理相关推荐

  1. 从0到1了解游戏音乐制作

    游戏中音乐是不可缺少的调味剂,能激起玩家的兴趣,给予玩家沉浸感.那么游戏音乐制作是什么样的呢?怎么才能给予玩家更强的沉浸感呢?下面一起来看看. 1.乐曲制作说明,只有从整体风格到乐器演奏,对创作这首作 ...

  2. Unity 音乐播放管理器

    MonoSingleton using UnityEngine; public class MonoSingleton<T> : MonoBehaviour where T : MonoB ...

  3. 游戏音乐制作的软件系统

    http://blog.csdn.net/csdn_gamedev/article/details/355120 游戏音乐制作的软件系统 图 / 文:小旭游戏音乐制作室( ) 游戏音乐在游戏中占有的重 ...

  4. Vol . 2 游戏音乐的制作流程

    Vol . 2  游戏音乐的制作流程 图/文:小旭游戏音乐制作室 (ww.Game1234567.com) 一部网络游戏的整个音乐.音效制作过程,经历的步骤比较多,持续的时间也比较长,由于多采用外包的 ...

  5. unity引擎声音格式的选择------转载请注明出处:Channel游戏音乐工作室---转

    Gapless looping MP3 music in Unity 3D 关于unity下 播放无缝循环的音乐 我们会发现一个问题,就是音乐制作团队提供的文件,使用PC或是MAC的一些特殊的第三方播 ...

  6. 弹弹堂服务器如何修改,弹弹堂端游服务端+手工弹弹堂游戏客户端+GM管理后台+附安裝构建实例教程...

    弹弹堂端游服务端+手工弹弹堂游戏客户端+GM管理后台+附安裝构建实例教程 系统centos 7.2 64位 安装宝塔 yum install -y wget && wget -O in ...

  7. Unity 3D 创建简单的几何模型 || Unity 3D Assets 游戏资源目录管理

    Unity 3D 创建简单的几何模型 Unity 3D 是一个强大的游戏开发引擎.在游戏开发中使用的模型常常是从外部导入的,Unity 3D 为了方便游戏开发者快速创建模型,提供了一些简单的几何模型, ...

  8. Android游戏开发-布局管理

    Android游戏开发-布局管理 2012/5/16 星期三 下午   我们都知道,系统控件一般都会搭载进布局里的,在Android呢,提供了5种布局类型,通过这五种布局之间的相互组合可以构建各种复杂 ...

  9. 游戏音乐是游戏内涵的补充

    当我们的祖先意识到交流的重要性时,便产生了语言:我们在劳动过程中心有所感,便出现了音乐:时至今日,语言与音乐已经形成博大精深的体系,没有声音,这个世界将会枯燥乏味:没有音乐,再优秀的游戏也会黯然失色, ...

最新文章

  1. Redis 字符串(String)
  2. 腾讯AI Lab:深度解读AI辅助翻译的研究及应用
  3. 个人的web开发心得(八)----------非常适合入门新手,都是常识
  4. 集合判断哪非空 、2个集合取交集/并集/差集
  5. 分析方法的基础 — 1. 拆分能力,分析师的第一技能
  6. 洛谷 P1966 火柴排队 —— 思路
  7. SAP BPC最佳实践-BPC系统备份及恢复
  8. pads 文本不能修改_修改PDF文件很难?其实很简单,只是你少了一个好用的PDF编辑器...
  9. gtk_widget_modify_bg的用法
  10. Python入门--模块,from,import,自定义模块
  11. python经济与管理学院学生社团管理系统设计与实现_实验10-大学生社团管理系统的设计和实现...
  12. 人脸对齐(十六)--DenseFA
  13. RemoveDirectory 功能:删除文件夹
  14. 《Excel图表之道》学习与阅读启示(一)
  15. Python 万能代码模版:爬虫代码篇
  16. 双alpha可以结合吗_评测揭秘双音腔HyperX Cloud Alpha耳机
  17. python 调用Google Translate API 翻译
  18. 【安装】wsl ubuntu18.04安装libc6:i138报错E: Unable to locate package libc6-i386及解决
  19. 托福百日冲刺(五一记忆)(1)
  20. [附源码]java毕业设计代驾服务系统

热门文章

  1. linux vsftpd架设
  2. Delphi Code Editor 之 编辑器选项
  3. IDE---Gvim支持php的函数自动补全
  4. APACHE工作原理详解
  5. 活动目录系列之一:主域控制器的搭建
  6. 企业 SpringBoot 教程 (七)springboot开启声明式事务
  7. Java随笔--分布式
  8. 部署 SCCM 2012R2之三:系统准备篇
  9. 你应该在开始API开发之前知道的事(下)(翻译)
  10. 继续着茫茫碌碌的日子