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)代码控制音频播放

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

2 应用

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

1)游戏界面

2)游戏对象层级结构

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

3)AudioSource 组件

4)脚本组件

​ AudioController.cs

using UnityEngine;

public class AudioController : MonoBehaviour {
private PlayerController player;
private AudioSource audioSource; private void Awake() {
audioSource = GetComponent<AudioSource>();
player = GameObject.Find("Player").GetComponent<PlayerController>();
} private void Update() {
if (player.isMoving) {
PlayAudio();
}
} private void PlayAudio() {
if (!audioSource.isPlaying) {
audioSource.Play();
}
}
}

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

​ PlayerController.cs

using UnityEngine;

public class PlayerController : MonoBehaviour {
public bool isMoving = false; private void Update() {
isMoving = Move();
} private bool Move() {
float hor = Input.GetAxis("Horizontal");
float ver = Input.GetAxis("Vertical");
if (Mathf.Abs(hor) > 0.1f || Mathf.Abs(ver) > 0.1f) {
Vector3 dire = new Vector3(hor, 0, ver) * Time.deltaTime * 10;
transform.position += dire;
return true;
}
return false;
}
}

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

5)运行效果

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

​ 声明:本文转自【Unity3D】AudioSource组件

【Unity3D】AudioSource组件的更多相关文章

  1. Unity3D中组件事件函数的运行顺序

    事件函数的运行顺序 Unity 脚本中有很多按预设顺序以脚本身份执行的事件函数. 其执行顺序例如以下: 载入第一个场景 启动场景时调用这些函数(为场景中的每一个对象调用一次). Awake: 始终在调 ...

  2. Unity3d基础组件 (Component) 和脚本 (Script) 关系

    原版的:http://edu.china.unity3d.com/learning_document/getData?file=/Manual/TheComponent-ScriptRelations ...

  3. Unity3D Image 组件附入图片问题

    作为新手经常会看到有个Image的组件 代码中理所当然的public 发现图片并不能附入其中, 解决办法直接 public Sprite 就可以了

  4. Unity3D深入浅出 -组件与节点之间的调用关系

    一.transform组件用途 1.维护场景树 2.对3D物体的平移,缩放,旋转 二.场景树定义 在Hierarchy视图中显示的: 一个game_scene场景,下面有Main Camera节点,D ...

  5. unity3d常用组件及分析

  6. Unity3D - UGUI组件的中英文对照

  7. Unity3d&C#分布式游戏服务器ET框架介绍-组件式设计

    前几天写了<开源分享 Unity3d客户端与C#分布式服务端游戏框架>,受到很多人关注,QQ群几天就加了80多个人.开源这个框架的主要目的也是分享自己设计ET的一些想法,所以我准备写一系列 ...

  8. [Unity3D]Unity3D游戏开发之飞机大战项目解说

    大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...

  9. unity3d 学习笔记(两)

    AudioClip 使用声音资源 unity3d资源可以被设置为声3d声音或2d声音.3d间的影响,越近声音越大 component: Audio source: 声音的发生物体 Audio list ...

  10. 【转】Unity3D研究院之两种方式播放游戏视频

    http://www.xuanyusong.com/archives/1019   Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像 ...

随机推荐

  1. CSS 3D - rotate旋转90度看不到的原理 和 解决方法

    原理: 旋转元素的坐标有三个 :X(向右),   Y(向左) ,   Z(向电脑屏幕的你) 当没有位移旋转元素时,元素 Z 坐标也会同着一起旋转 ,当一个物品旋转到90度时,我们只能看到它的厚度,而d ...

  2. [转帖]Kafka-LEO和HW概念及更新流程

    https://www.cnblogs.com/youngchaolin/p/12641463.html 目录 LEO&HW基本概念 LEO&HW更新流程 LEO HW 更新流程示例分 ...

  3. [转帖]【Python】计算程序运行时间的方法总结

    一.第一种方法 利用time包: import time def test(): start_time = time.time() # 记录程序开始运行时间 s = 0 for i in range( ...

  4. [转帖]12.计算机网络---iptables防火墙管理工具

    文章目录 一.防火墙基础知识 1.1 防火墙是什么? 1.2 iptables基础知识 1.3 netfilter和iptables的关系: 1.4 新型防火墙工具:firewalld 二.iptab ...

  5. [转帖]浅谈Armv8-A处理器

    https://www.elecfans.com/emb/dsp/202208291886182.html 众所周知,ARM是一家设计并授权处理器和相应IP(比如互连总线,中断处理器,图像处理器等等) ...

  6. K8S多节点情况下使用nginx负载ingress或者是istio域名服务的处理

    K8S多节点情况下使用nginx负载ingress或者是istio域名服务的处理 背景 公司内部有一个自建的K8S测试集群.同事这边使用istio或者是ingress发布了一个域名服务. 公司这边的D ...

  7. 飞腾2000+上面银河麒麟v10 安装virt-manager创建虚拟机的操作过程

    操作系统安装完之后自带了repos 就可以执行大部分操作, 不需要修改包源 ###Kylin Linux Advanced Server 10 - os repo### [ks10-adv-os] n ...

  8. 慢SQL的致胜法宝

    大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什么思路去解决是我们必须 ...

  9. Spring Boot 统一RESTful接口响应和统一异常处理

    一.简介 基于Spring Boot 框架开发的应用程序,大部分都是以提供RESTful接口为主要的目的.前端或者移动端开发人员通过调用后端提供的RESTful接口完成数据的交换. 统一的RESTfu ...

  10. css3只需一招,将网站变成灰色的

    今天大家在浏览B站,腾讯视频,等网站时,有没有发现一个现象,网站变成灰色的了. 是不是跟平常不一样了呢,这是因为今天(2020.4.4)是全国哀悼日, 所以网站这些就变成灰色的呢. 我去看了一下腾讯的 ...