版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lijianfex/article/details/78493803
Unity之C#--用单例实现一个游戏内部的音效控制器
在游戏开发中,音效是很重要的一环,没有音效的游戏就没有灵魂,所以实现声音控制是很有必要的,同时,音效可能还会因玩家的性别不同,分为男女声。我用单例写了个简单的声音控制器,并且从Resources中动态读取声音,在场景中加了一个空物体命名为GamePlayAudio,把声音控制器脚本挂载上面。游戏需要播放声音时通过单例调用播放声音的方法即可。
代码如下:
SoundManeger.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 声音管理器,单例模式
/// </summary>
public class SoundManeger : MonoBehaviour {
private static SoundManeger _instance;
public AudioSource source;
private static GameObject gamePlayAudio;
public static SoundManeger getInstance()
{
if(_instance==null)
{
GameObject temp = SoundManeger.gamePlayAudio;
_instance = temp.GetComponentInChildren<SoundManeger>();
}
return _instance;
}
void Start()
{
source = this.GetComponent<AudioSource>();
gamePlayAudio = this.gameObject;
}
void Update()
{
}
/// <summary>
/// 播放带有性别区分的声音的接口
/// </summary>
/// <param name="str">声音编号</param>
/// <param name="sex">男:1,女:0</param>
public void PlaySound(string str,int sex)
{
if(GlobalDataScript.soundToggle)
{
if (sex==1)
{
AudioClip clip = (AudioClip)Resources.Load("AudioClip/"+str+"boy", typeof(AudioClip));
source.PlayOneShot(clip,GlobalDataScript.volume);
}
else
{
AudioClip clip = (AudioClip)Resources.Load("AudioClip/"+str +"girl", typeof(AudioClip));
source.PlayOneShot(clip,GlobalDataScript.volume);
}
}
return;
}
/// <summary>
/// 播放其他的声音接口
/// </summary>
/// <param name="str">声音的名字</param>
public void PlaySound(string str)
{
if (GlobalDataScript.soundToggle)
{
AudioClip clip = (AudioClip)Resources.Load("AudioClip/" + str, typeof(AudioClip));
source.PlayOneShot(clip, GlobalDataScript.volume);
}
}
}