当前位置:   article > 正文

【Unity3D】AudioSource组件_unity audiosource

unity audiosource

1 简介

        1)AudioSource 与 AudioListener 简介

        AudioSource(音频源)组件用于控制播放 AudioClip(音频片段),能够控制 2D 和 3D(距离越远,声音越小)声音播放,它一般挂在产生声源的游戏对象上。

        AudioListener (音频监听器)组件用于监听 AudioSource 播放的音频,它一般挂在 Camera 或游戏角色上,每个场景中最多只有一个 AudioListener。AudioSource 播放音频时,会产生一个音频场,只有在音频场范围内的 AudioListener 才能监听到声音。

        AudioClip 是音频片段,AudioSource 在播放音频时,必须绑定一个 AudioClip。

        2)AudioSource 面板属性

  • AudioClip:音频片段
  • Mute:静音
  • Play On Awake:游戏开始时播放声音
  • Loop:是否循环播放
  • Volume:音量
  • Spatial Blend:2D、3D 声音调节
  • Min Distance:3D 声音最小距离
  • Max Distance:3D 声音最大距离

        补充:Unity3D 官方提供了一些音频资源,如下:

        3)代码控制音频播放

  1. // 加载音频片段
  2. AudioClip audioClip = (AudioClip) Resources.Load("Audio/Footstep01");
  3. // 获取AudioSource组件
  4. AudioSource audioSource = GetComponent<AudioSource>();
  5. // 绑定音频片段
  6. audioSource.clip = audioClip;
  7. // 播放音频(选其中一种方式)
  8. audioSource.Play();
  9. // 此方式播放音频, Unity3D会在transform.position处创建一个空游戏对象, 播放完音频后自动销毁该游戏对象
  10. AudioSource.PlayClipAtPoint(audioClip, transform.position);

2 应用

        本节将通过一个案例展示 Unity3D 播放立体声效果。

        1)游戏界面

         2)游戏对象层级结构

         说明:AudioSourceSphere 游戏对象添加了 AudioSource 组件,并且将 Unity3D 官方提供的 Footstep01.wav 音频片段拖拽到 AudioSource 组件中;Player 游戏对象添加了 AudioListener,并移除 MainCamera 中默认添加的 AudioListener。

        3)AudioSource 组件

        4)脚本组件

        AudioController.cs

  1. using UnityEngine;
  2. public class AudioController : MonoBehaviour {
  3. private PlayerController player;
  4. private AudioSource audioSource;
  5. private void Awake() {
  6. audioSource = GetComponent<AudioSource>();
  7. player = GameObject.Find("Player").GetComponent<PlayerController>();
  8. }
  9. private void Update() {
  10. if (player.isMoving) {
  11. PlayAudio();
  12. }
  13. }
  14. private void PlayAudio() {
  15. if (!audioSource.isPlaying) {
  16. audioSource.Play();
  17. }
  18. }
  19. }

        说明: AudioController 脚本组件挂在 AudioSourceSphere 游戏对象上。

        PlayerController.cs

  1. using UnityEngine;
  2. public class PlayerController : MonoBehaviour {
  3. public bool isMoving = false;
  4. private void Update() {
  5. isMoving = Move();
  6. }
  7. private bool Move() {
  8. float hor = Input.GetAxis("Horizontal");
  9. float ver = Input.GetAxis("Vertical");
  10. if (Mathf.Abs(hor) > 0.1f || Mathf.Abs(ver) > 0.1f) {
  11. Vector3 dire = new Vector3(hor, 0, ver) * Time.deltaTime * 10;
  12. transform.position += dire;
  13. return true;
  14. }
  15. return false;
  16. }
  17. }

        说明: PlayerController 脚本组件挂在 Player 游戏对象上。 

        5)运行效果

        按 ↑ ↓ ← → 键控制胶囊体移动,在不同位置可以听到不同音量大小的脚步声。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/178729
推荐阅读
相关标签
  

闽ICP备14008679号