【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 中,AudioSource 组件用于控制音频的播放和管理。以下是常用的 AudioSource 控制方法及其说明。 1. 播放和暂停音频 Play():开始播放音频,如果是从暂停的地方继续播放,可以直接调用。Pause():暂停当前播放的…...
CSS系列(25)-- 滚动优化详解
前端技术探索系列:CSS 滚动优化详解 📜 致读者:探索流畅滚动的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS 滚动优化,学习如何创建流畅、高性能的滚动体验。 平滑滚动 🚀 基础设置 /* …...

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

Ubuntu下C语言操作kafka示例
目录 安装kafka: 安装librdkafka consumer Producer 测试运行 安装kafka: Ubuntu下Kafka安装及使用_ubuntu安装kafka-CSDN博客 安装librdkafka github地址:GitHub - confluentinc/librdkafka: The Apache Kafka C/C library $ apt in…...

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

HTTP接口报错详解与解决 200,500,403,408,404
前言: 仅做学习记录,侵删 背景 当后端编写接口时,经常需要对接口使用ApiFox或者PostMan进行测试,此时就会出现各种各样的报错,一般都会包括报错编码:200,400,401等。这个状态码一般是服务器所返回的包含…...
监控IP频繁登录服务器脚本
该脚本的作用是监控IP登录失败次数,如果某个IP的登录失败次数超过设定的最大次数,则阻止该IP的进一步登录尝试。通过iptables防火墙阻止连接,当一个IP尝试登录次数超过5次时,iptables会阻止来自该IP的所有连接 #!/bin/bashfuncti…...
分布式链路追踪-03-Jaeger、Zipkin、skywalking 中的 span 是如何设计的?
开源项目 auto-log 自动日志输出 Jaeger、Zipkin 中的 spanId 是如何生成的? 在 Jaeger 和 Zipkin 这两个分布式跟踪系统中,Span ID 是通过不同的方法生成的。 下面分别介绍它们的生成方式: Jaeger 中的 Span ID 生成: 在 Ja…...
【达梦数据库】获取对象DDL
目录 背景获取表的DDL其他 背景 在排查问题时总会遇到获取对象DDL的问题,因此做以下总结。 获取表的DDL 设置disql工具中显示LONG类型数据的最大长度,避免截断: SET LONG 9999获取DDL SELECT DBMS_METADATA.GET_DDL(TABLE,表名,模式名) …...
InnoDB和MyISAM引擎优缺点和区别
nnoDB和MyISAM是MySQL数据库中常用的两种存储引擎。它们各自具有不同的特性和优势,适用于不同的应用场景。 一、InnoDB引擎: 1、它有如下特性: 1)、支持事务(ACID) 2)、支持外键约束(FOREIGN KEY const…...

文件上传知识点汇总
归纳总结一下文件上传(其实是懒得写wp) 基于Dream ZHO师傅的CTF show 文件上传篇(web151-170,看这一篇就够啦)-CSDN博客 和dota_st 师傅的ctfshow-Web1000题系列修炼(一) | dota_st 做一篇自己的总结 目录 一、什么…...
计算机网络技术基础:5.数据通信系统
一、数据通信的基本概念 1.信息 信息是对客观事物的运动状态和存在形式的反映,可以是客观事实的形态、大小、结构、性能等描述,也可以是客观事物与外部之间的联系。信息的载体可以是数字、文字、语音、图形和图像等。计算机及其外围设备产生和交换的信息…...

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

高考志愿填报:如何制定合理的志愿梯度?
高考志愿填报中常见的避雷行为,深入分析了专业选择、招生政策了解、学校选择、备选方案准备以及防诈骗等方面的关键问题,并提出了针对性的建议与策略。旨在为考生和家长提供实用的指导,助力考生科学合理地填报高考志愿,避免陷入各…...
Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆角矩形实现,Kotlin(1)
Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆角矩形实现,Kotlin(1) <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res…...

webGL硬核知识:图形渲染管渲染流程,各个阶段对应的API调用方式
一、图形渲染管线基础流程概述 WebGL 的图形渲染管线大致可分为以下几个主要阶段,每个阶段都有其特定的任务,协同工作将 3D 场景中的物体最终转换为屏幕上呈现的 2D 图像: 顶点处理(Vertex Processing)阶段࿱…...
区块链详解
1. 概述 1.1 什么是区块链? 区块链是一种分布式数据库技术,它以链式数据结构的形式存储数据,每个数据块与前一个数据块相关联,形成了一个不断增长的数据链。每个数据块中包含了一定数量的交易信息或其他数据,这些数据…...
【EXCEL 逻辑函数】AND、OR、XOR、NOT、IF、IFS、IFERROR、IFNA、SWITCH
目录 AND:当所有条件都为真时返回 TRUE,否则返回 FALSE OR:当任一条件为真时返回 TRUE,否则返回 FALSE XOR:当奇数个条件为真时返回 TRUE,否则返回 FALSE NOT :反转逻辑值 IF:根…...

ubuntu下gdb调试ROS
参考: 使用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? 简单来说:Docker通过提供轻量级、隔离且可移植的容器化环境,使得应用在不同平台上保持一致性、易于部署和管理,具体如下 环境一致性: Docker容器使得…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...