每一款游戏都需要音效
那么今天我就来给大家分享一个Unity中播放音效的一个脚本,非常好用。
下面就是上代码的时间
声音播放框架
//声音物体 using UnityEngine; using System.Collections;
public class Sounds : MonoBehaviour { public AudioSource soundPlayer; // Use this for initialization void Awake() { soundPlayer = GetComponent<AudioSource>(); } void Start() { soundPlayer.Play(); if (!soundPlayer.loop) { Destroy(gameObject, soundPlayer.clip.length + 0.3f); }
}
// Update is called once per frame
void Update()
{
}
public void Play(string clipName,Vector3 postion , float volume = 1,float maxDistance = 100f, bool Is3D = true, bool IsLoop = false)
{
soundPlayer.clip = Resources.Load<AudioClip>(clipName);//动态加载资源
soundPlayer.volume = volume;
soundPlayer.maxDistance = maxDistance;
soundPlayer.spatialBlend = Is3D ? 1 : 0;
soundPlayer.loop = IsLoop;
transform.position = postion;
}
}
//声音处理 创建声音组件 声音控制器 using UnityEngine; using System.Collections;
public class SoundMystical : MonoBehaviour//单例 {
public static SoundMystical instence;
public GameObject soungPre;
// Use this for initialization
void Awake()
{
if (instence == null)
{
instence = this;
}
}
public void Play(string clipName, Vector3 postion, float volume = 1, float maxDistance = 100f, bool Is3D = true, bool IsLoop = false)
{
GameObject sondObj = Instantiate(soungPre, postion, Quaternion.identity) as GameObject;
sondObj.GetComponent<Sounds>().Play(clipName, postion, volume, maxDistance, Is3D, IsLoop);
}
} //玩家组件,,读取声音文件 using UnityEngine; using System.Collections;
public class Playeraa : MonoBehaviour {
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
SoundMystical.instence.Play("青蛙", transform.position);
}
if (Input.GetMouseButtonDown(1))
{
SoundMystical.instence.Play("东京不太热", transform.position, 0.5f, 233, false);
}
}
}