unity PlayClipAtPoint的全局单例播放

unity中播放音效有几种方式
方式一:
得到AudioSource组件,赋上clip,然后play
方式二:
直接使用AudioSource.PlayClipAtPoint(clip, position, volume)

但是第一种方式我们一般用来播放背景音乐了,但是又说回来,除了背景音乐外,我们还要有其他的音效播放.这个时候就会冲突.
比如说:
选角色的时候要让角色说一句话,此时有两个限制条件

  1. 需要有背景音乐
  2. 在第一次人物说话没有结束的时候,再次点击,要让当前人物停止说话,然后播放新的语言

解决这个问题有两种简单的方法

  1. 重新声明一个AudioSource,然后用这个AudioSource专门来管理除背景音乐外的音效播放
  2. 使用AudioSource.PlayClipAtPoint()方法

但是使用方法二来解决,就会造成一个声音重复的问题,这里提供一种比较不符合规范的解决方案.

        GameObject oneShotAudio = GameObject.Find("One shot audio");
        if(oneShotAudio)
            Destroy(oneShotAudio);
        AudioSource.PlayClipAtPoint(clip, pos, volume);

你在Scene里面看,使用方法AudioSource.PlayClipAtPoint()之后,场景中会出现一个名叫
One shot audio的物体,那么剩下的就很简单了,存在该物体,销毁,再重新播放音效.

猜你喜欢

转载自blog.csdn.net/qq_40666620/article/details/108584510