unity中播放音效有几种方式
方式一:
得到AudioSource
组件,赋上clip
,然后play
方式二:
直接使用AudioSource.PlayClipAtPoint(clip, position, volume)
但是第一种方式我们一般用来播放背景音乐了,但是又说回来,除了背景音乐外,我们还要有其他的音效播放.这个时候就会冲突.
比如说:
选角色的时候要让角色说一句话
,此时有两个限制条件
- 需要有背景音乐
- 在第一次人物说话没有结束的时候,再次点击,要让当前人物停止说话,然后播放新的语言
解决这个问题有两种简单的方法
- 重新声明一个AudioSource,然后用这个AudioSource专门来管理除背景音乐外的音效播放
- 使用AudioSource.PlayClipAtPoint()方法
但是使用方法二来解决,就会造成一个声音重复的问题,这里提供一种比较不符合规范的解决方案.
GameObject oneShotAudio = GameObject.Find("One shot audio");
if(oneShotAudio)
Destroy(oneShotAudio);
AudioSource.PlayClipAtPoint(clip, pos, volume);
你在Scene里面看,使用方法AudioSource.PlayClipAtPoint()之后,场景中会出现一个名叫
One shot audio
的物体,那么剩下的就很简单了,存在该物体,销毁,再重新播放音效.