当前位置: 首页 > news >正文

【Unity基础】AudioSource 常用方法总结

在这里插入图片描述

在 Unity 中,AudioSource 组件用于控制音频的播放和管理。以下是常用的 AudioSource 控制方法及其说明。

1. 播放和暂停音频

  • Play():开始播放音频,如果是从暂停的地方继续播放,可以直接调用。
  • Pause():暂停当前播放的音频。
  • Stop():完全停止当前播放的音频并重置播放进度。
AudioSource audioSource = GetComponent<AudioSource>();
audioSource.Play();  // 播放音频
audioSource.Pause(); // 暂停音频
audioSource.Stop();  // 停止音频

2. 设置播放时间

  • time:获取或设置音频的当前播放时间(以秒为单位)。你可以用它来设置从指定的时间点开始播放。
audioSource.time = 10f;  // 从10秒开始播放

3. 循环播放

  • loop:控制音频是否循环播放。设为 true 时,音频会循环播放,直到调用 Stop()
audioSource.loop = true;  // 启用循环播放
audioSource.loop = false; // 禁用循环播放

4. 音量控制

  • volume:控制音频的音量,范围是 0 到 1。
audioSource.volume = 0.5f;  // 设置音量为50%

5. 音高控制

  • pitch:调整音频的播放速度和音高。范围通常是 0.1 到 3。
audioSource.pitch = 1.2f;  // 提高音高并加速播放

6. 静音

  • mute:控制是否静音音频。
audioSource.mute = true;  // 静音
audioSource.mute = false; // 恢复音量

7. 播放短音效

  • PlayOneShot():用于播放短音效,不会打断当前的背景音乐。
audioSource.PlayOneShot(someAudioClip);  // 播放音效

8. 检查音频是否正在播放

  • isPlaying:返回一个布尔值,表示音频是否正在播放。
if (audioSource.isPlaying)
{// 音频正在播放
}
else
{// 音频没有播放
}

9. 获取音频数据

  • GetOutputData()GetSpectrumData():获取音频的输出数据和频谱数据,用于音频可视化和分析。
float[] data = new float[256];
audioSource.GetOutputData(data, 0);  // 获取音频的输出数据

完整代码示例

下面的代码示例展示了如何结合使用 AudioSource 的常用控制方法来实现一个简单的音频管理器。该管理器能够播放、暂停音频、从指定时间点播放音频,控制音量、音高,以及播放短音效等功能。

using UnityEngine;public class AudioManager : MonoBehaviour
{public AudioSource audioSource;        // 用于播放音频的 AudioSource 组件public AudioClip backgroundMusic;     // 背景音乐public AudioClip shortEffect;         // 短音效public float startTime = 10f;         // 从10秒开始播放背景音乐private void Start(){// 获取 AudioSource 组件audioSource = GetComponent<AudioSource>();audioSource.clip = backgroundMusic;  // 设置背景音乐}private void Update(){// 按P键播放或暂停音乐if (Input.GetKeyDown(KeyCode.P)){if (audioSource.isPlaying){audioSource.Pause();}else{audioSource.Play();}}// 按S键从指定时间点播放音乐if (Input.GetKeyDown(KeyCode.S)){audioSource.time = startTime;  // 设置从10秒开始播放audioSource.Play();            // 播放音乐}// 按L键启用循环播放if (Input.GetKeyDown(KeyCode.L)){audioSource.loop = true;   // 启用循环播放}// 按K键禁用循环播放if (Input.GetKeyDown(KeyCode.K)){audioSource.loop = false;  // 禁用循环播放}// 按M键静音或取消静音if (Input.GetKeyDown(KeyCode.M)){audioSource.mute = !audioSource.mute; // 切换静音状态}// 按V键播放短音效if (Input.GetKeyDown(KeyCode.V)){audioSource.PlayOneShot(shortEffect);  // 播放短音效}// 按U键增加音量if (Input.GetKeyDown(KeyCode.U)){audioSource.volume = Mathf.Clamp(audioSource.volume + 0.1f, 0f, 1f); // 增加音量}// 按D键减少音量if (Input.GetKeyDown(KeyCode.D)){audioSource.volume = Mathf.Clamp(audioSource.volume - 0.1f, 0f, 1f); // 减少音量}// 按I键增加音高if (Input.GetKeyDown(KeyCode.I)){audioSource.pitch = Mathf.Clamp(audioSource.pitch + 0.1f, 0.1f, 3f); // 增加音高}// 按O键减少音高if (Input.GetKeyDown(KeyCode.O)){audioSource.pitch = Mathf.Clamp(audioSource.pitch - 0.1f, 0.1f, 3f); // 减少音高}}
}

代码说明:

  • 播放、暂停和停止:通过 audioSource.Play(), audioSource.Pause()audioSource.Stop() 控制背景音乐的播放状态。
  • 从指定时间点播放:通过 audioSource.time 设置播放起始点,再调用 audioSource.Play() 从该点开始播放。
  • 循环播放:通过 audioSource.loop 控制音频是否循环。
  • 音量控制:通过 audioSource.volume 增减音量。
  • 音高控制:通过 audioSource.pitch 调整播放速度和音高。
  • 静音控制:通过 audioSource.mute 切换静音状态。
  • 播放短音效:通过 audioSource.PlayOneShot() 播放音效,不会影响背景音乐的播放。

这个示例通过键盘输入控制音频的各种操作,适合在实际项目中灵活调整音频的播放行为。

相关文章:

【Unity基础】AudioSource 常用方法总结

在 Unity 中&#xff0c;AudioSource 组件用于控制音频的播放和管理。以下是常用的 AudioSource 控制方法及其说明。 1. 播放和暂停音频 Play()&#xff1a;开始播放音频&#xff0c;如果是从暂停的地方继续播放&#xff0c;可以直接调用。Pause()&#xff1a;暂停当前播放的…...

CSS系列(25)-- 滚动优化详解

前端技术探索系列&#xff1a;CSS 滚动优化详解 &#x1f4dc; 致读者&#xff1a;探索流畅滚动的艺术 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS 滚动优化&#xff0c;学习如何创建流畅、高性能的滚动体验。 平滑滚动 &#x1f680; 基础设置 /* …...

CST天线设计的六大核心特点:为天线分析提供完整解决方案!

CST Studio Suite 为天线设计提供了从最初的概念评估到最终的合规性测试所需的所有功能&#xff0c;确保天线设计在各种环境下实现稳定通信。这一套工具覆盖了所有重要的设计阶段&#xff0c;帮助设计师顺利完成从概念到成品的全过程。 下面我们来看一看CST电磁仿真中天线设计…...

Ubuntu下C语言操作kafka示例

目录 安装kafka&#xff1a; 安装librdkafka consumer Producer 测试运行 安装kafka&#xff1a; Ubuntu下Kafka安装及使用_ubuntu安装kafka-CSDN博客 安装librdkafka github地址&#xff1a;GitHub - confluentinc/librdkafka: The Apache Kafka C/C library $ apt in…...

怎么将pdf中的某一个提取出来?介绍几种提取PDF中页面的方法

怎么将pdf中的某一个提取出来&#xff1f;传统上&#xff0c;我们可能通过手动截取屏幕或使用PDF阅读器的复制功能来提取信息&#xff0c;但这种方法往往不够精确&#xff0c;且无法保留原文档的排版和格式。此外&#xff0c;很多时候我们需要提取的内容可能涉及多个页面、多个…...

HTTP接口报错详解与解决 200,500,403,408,404

前言&#xff1a; 仅做学习记录&#xff0c;侵删 背景 当后端编写接口时&#xff0c;经常需要对接口使用ApiFox或者PostMan进行测试&#xff0c;此时就会出现各种各样的报错&#xff0c;一般都会包括报错编码&#xff1a;200,400,401等。这个状态码一般是服务器所返回的包含…...

监控IP频繁登录服务器脚本

该脚本的作用是监控IP登录失败次数&#xff0c;如果某个IP的登录失败次数超过设定的最大次数&#xff0c;则阻止该IP的进一步登录尝试。通过iptables防火墙阻止连接&#xff0c;当一个IP尝试登录次数超过5次时&#xff0c;iptables会阻止来自该IP的所有连接 #!/bin/bashfuncti…...

分布式链路追踪-03-Jaeger、Zipkin、skywalking 中的 span 是如何设计的?

开源项目 auto-log 自动日志输出 Jaeger、Zipkin 中的 spanId 是如何生成的&#xff1f; 在 Jaeger 和 Zipkin 这两个分布式跟踪系统中&#xff0c;Span ID 是通过不同的方法生成的。 下面分别介绍它们的生成方式&#xff1a; Jaeger 中的 Span ID 生成&#xff1a; 在 Ja…...

【达梦数据库】获取对象DDL

目录 背景获取表的DDL其他 背景 在排查问题时总会遇到获取对象DDL的问题&#xff0c;因此做以下总结。 获取表的DDL 设置disql工具中显示LONG类型数据的最大长度&#xff0c;避免截断&#xff1a; SET LONG 9999获取DDL SELECT DBMS_METADATA.GET_DDL(TABLE,表名,模式名) …...

InnoDB和MyISAM引擎优缺点和区别

nnoDB和MyISAM是MySQL数据库中常用的两种存储引擎。它们各自具有不同的特性和优势&#xff0c;适用于不同的应用场景。 一、InnoDB引擎&#xff1a; 1、它有如下特性&#xff1a; 1)、支持事务&#xff08;ACID&#xff09; 2)、支持外键约束&#xff08;FOREIGN KEY const…...

文件上传知识点汇总

归纳总结一下文件上传&#xff08;其实是懒得写wp&#xff09; 基于Dream ZHO师傅的CTF show 文件上传篇&#xff08;web151-170&#xff0c;看这一篇就够啦&#xff09;-CSDN博客 和dota_st 师傅的ctfshow-Web1000题系列修炼(一) | dota_st 做一篇自己的总结 目录 一、什么…...

计算机网络技术基础:5.数据通信系统

一、数据通信的基本概念 1.信息 信息是对客观事物的运动状态和存在形式的反映&#xff0c;可以是客观事实的形态、大小、结构、性能等描述&#xff0c;也可以是客观事物与外部之间的联系。信息的载体可以是数字、文字、语音、图形和图像等。计算机及其外围设备产生和交换的信息…...

光谱相机在农业的应用

一、作物生长监测1、营养状况评估 原理&#xff1a;不同的营养元素在植物体内的含量变化会导致植物叶片或其他组织的光谱反射率特性发生改变。例如&#xff0c;氮元素是植物叶绿素的重要组成部分&#xff0c;植物缺氮时&#xff0c;叶绿素含量下降&#xff0c;其在可见光波段&a…...

高考志愿填报:如何制定合理的志愿梯度?

高考志愿填报中常见的避雷行为&#xff0c;深入分析了专业选择、招生政策了解、学校选择、备选方案准备以及防诈骗等方面的关键问题&#xff0c;并提出了针对性的建议与策略。旨在为考生和家长提供实用的指导&#xff0c;助力考生科学合理地填报高考志愿&#xff0c;避免陷入各…...

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆角矩形实现,Kotlin(1)

Android基于Path的addRoundRect&#xff0c;Canvas剪切clipPath简洁的圆角矩形实现&#xff0c;Kotlin&#xff08;1&#xff09; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res…...

webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式

一、图形渲染管线基础流程概述 WebGL 的图形渲染管线大致可分为以下几个主要阶段&#xff0c;每个阶段都有其特定的任务&#xff0c;协同工作将 3D 场景中的物体最终转换为屏幕上呈现的 2D 图像&#xff1a; 顶点处理&#xff08;Vertex Processing&#xff09;阶段&#xff1…...

区块链详解

1. 概述 1.1 什么是区块链&#xff1f; 区块链是一种分布式数据库技术&#xff0c;它以链式数据结构的形式存储数据&#xff0c;每个数据块与前一个数据块相关联&#xff0c;形成了一个不断增长的数据链。每个数据块中包含了一定数量的交易信息或其他数据&#xff0c;这些数据…...

【EXCEL 逻辑函数】AND、OR、XOR、NOT、IF、IFS、IFERROR、IFNA、SWITCH

目录 AND&#xff1a;当所有条件都为真时返回 TRUE&#xff0c;否则返回 FALSE OR&#xff1a;当任一条件为真时返回 TRUE&#xff0c;否则返回 FALSE XOR&#xff1a;当奇数个条件为真时返回 TRUE&#xff0c;否则返回 FALSE NOT &#xff1a;反转逻辑值 IF&#xff1a;根…...

ubuntu下gdb调试ROS

参考&#xff1a; 使用VsCode进行ROS程序调试_ros vscode 调试-CSDN博客 https://blog.csdn.net/weixin_45031801/article/details/134399664?spm1001.2014.3001.5506 一、调试准备 1.1 CMakeLists改动 注释文件中的 set(CMAKE_BUILD_TYPE "Release") #构建类…...

Docke_常用命令详解

这篇文章分享一下笔者常用的Docker命令供各位读者参考。 为什么要用Docker? 简单来说&#xff1a;Docker通过提供轻量级、隔离且可移植的容器化环境&#xff0c;使得应用在不同平台上保持一致性、易于部署和管理&#xff0c;具体如下 环境一致性&#xff1a; Docker容器使得…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...