经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » unity » 查看文章
一文详解Unity3D?AudioSource组件使用示例
来源:jb51  时间:2023/3/27 14:48:39  对本文有异议

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)运行效果

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

以上就是一文详解Unity3D AudioSource组件使用示例的详细内容,更多关于Unity3D AudioSource组件的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号