unity的声音的使用

之前我写过一篇很方便使用声音的管理器
这篇博客全面的介绍几种播放声音的方法
1.常见使用方法介绍
(1) Play()  //播放背景音乐(只能播放在同一实际内播放一种音乐)
(2) PlayOnShot()  //播放2D音效
2.使用方法
(1) PlayClipAtPoint()  //播放3D音效

想要正常的产生和听到声音必须有监听器AudioListener
当我们想要控制背景音乐等就可以用 Play() Pause() Stop() 进行控制。

(2) 如果我们需要在同一时间播放多种音乐。 我们就需要用到 PlayClipAtPoint() 或者 PlayOnShot()
  PlayOnShot() 与 PlayClipAtPoint() 区别在于
1. PlayClipAtPoint() 是 Static Method 不需要实例化对象就可以使用.
  2. PlayClipAtPoint() 播放的是 3D 音效,音效大小与摄像机位置有关
   PlayOnShot() 播放的是 2D 音效
 相同点:
  用这两种方法,
  每个AudioSource都可以同时播放多种音效,
  都可以调节音量大小

音效可以用下述方法来播放:static void PlayClipAtPoint(AudioClip clip,Vector3 position, float volume = 1.0F);
使用AudioSource.PlayClipAtPoint播放声音,会自动生成一个名为"One shot audio"的物体,
并自动添加了AudioSource和相应的audioclip,同时播放多个声音时会生成多个同名的物体,
各声音的播放互不影响,但缺点是只能设置音量,位置,
还有一些特殊的声音效果也不易实现,只能播放一次,播放完成后,One shot audio自动销毁。
下面是一个PlayClipAtPoint的实例 用起来比较方便

 public int index = 0;
 public AudioClip[] clips;
 void Start()
 {
  index = 0;
  InvokeRepeating("PlaySound", 2.0f, 0.5f);
 }
 void PlaySound()
 {
  if (index < clips.Length)
  {
   AudioSource.PlayClipAtPoint(clips[index], Vector3.zero, 1.0f);
   index++;
  }
   else
  {
   index = 0;
  }
 }

当我们使用时候只要吧clip拖上去就行
在这里插入图片描述
可以看出,在只需要播放简单的音效时,可以使用PlayClipAtPoint来播放,不需要添加AudioSource,不需要获取各个AudioSource的引用,就可以直接播放声音。

还有就是InvokeRepeating的作用是在等待第二个参数的时间间隔,调用第一个参数方法 然后再经过第三个参数的时间间隔再次调用

PlayOneShot(Clip,volume);//其中的clip是声音片段 volume是音量大小

PlayOneShot和PlayClipAtPoint的两个方法的音量大小这个参数是可以省略不写的

发布了88 篇原创文章 · 获赞 101 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_44302602/article/details/105030137