【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() 播放音效,不会影响背景音乐的播放。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491010.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ADS射频电路学习笔记】2.阻抗匹配电路设计

本节课学习smith圆图匹配 1.史密斯圆图各功能介绍 首先调出s参数的控件 并增加两个端口 调出smith chart matching的控件 连接好端口在ADS中&#xff0c;默认是从负载端&#xff08;term2&#xff09;向源端&#xff08;term1&#xff09;做匹配的。 调节s参数控件的的频率扫…

01《Python数据分析》数据分析初探章节总结

目录 1 概述1.1 数据分析定义1.2 数据分析目标1.3 数据分析分类 2 数据分析方法3 数据分析流程4 寻找问题原因5 典型问题参考学习 1 概述 1.1 数据分析定义 数据分析1就是&#xff1a;用适当的统计分析方法对收集来的大量数据进行分析&#xff0c;提取有用信息和形成结论&…

杰理-LVGL-默认隐藏容器

杰理-LVGL-默认隐藏容器 lv_obj_add_flag(ui->screen_music_cont_tip, LV_OBJ_FLAG_HIDDEN)

软件需求概述(尊享版)

软件需求与软件分析 软件需求&#xff1a;用户角度&#xff0c;注重软件外在表现 软件分析&#xff1a;开发者角度&#xff0c;注重软件内部逻辑结构 面向对象分析模型 类/对象模型&#xff08;全部的类和对象&#xff09; 对象-关系模型&#xff08;对象之间的静态关系&…

将PDF流使用 canvas 绘制展示在页面上(一)

将PDF流展示在页面上 使用 pdfjs-dist 库来渲染 PDF 页面到 canvas 上进行绘制展示 安装 pdfjs-dist 依赖 npm install pdfjs-dist 或者 yarn add pdfjs-dist创建一个组件来处理 PDF 流的加载和渲染 该组件中是一个包含 PDF 文件的 Base64。 将 pdf 流传入该组件中使用 /** fo…

web遇到的安全漏洞

最近项目又在做安全漏扫&#xff0c;记录下遇到的常见的web安全问题 越权 漏洞介绍 攻击者可以在授权状态下&#xff0c;通过修改数据包的参数&#xff0c;操作超出现有权限操作的功能点。举例 修改密码时&#xff0c;可以通过修改名称参数&#xff0c;修改任意用户密码。 任…

12.11数据结构-图

无向完全图&#xff1a;在无向图中&#xff0c;如果任意两个顶点之间都存在边&#xff0c;则称该图为无向完全图。 有向完全图&#xff1a;在有向图中&#xff0c;如果任意两个顶点之间都存在方向相反的两条弧&#xff0c;则称该图为有向完全图。 含有n个顶点的无向完全图有…

【Python】【数据分析】深入探索 Python 数据可视化:Matplotlib 绘图库完整教程

目录 引言一、什么是 Matplotlib&#xff1f;1.1 Matplotlib 的安装1.2 Matplotlib 的基本功能 二、Matplotlib 的基础绘图2.1 绘制折线图2.2 绘制柱状图2.3 绘制散点图2.4 绘制饼图 三、高级功能与定制3.1 设置图表样式3.2 使用子图3.3 保存图表 四、Matplotlib 流程图4.1 Mer…

3-机器人视觉-机器人抓取与操作

文章目录 3机器人视觉目录 1. 传感器和标定摄像头模型Intrinsic MatrixExtrinsic Matrix 标定内参标定手眼标定和外参标定 力传感器&其它传感器其它传感器 2. 神经网络和图像处理2D特征处理常见架构 训练流程推理流程部署流程2D 图像任务3D Point Cloud FeaturePointNet Ap…

从源码层级深入探索 Spring AMQP 如何在 Spring Boot 中实现 RabbitMQ 集成——消费者如何进行消费

本章节主要从底层源码探索Spring Boot中RabbitMQ如何进行消费&#xff0c;至于RabbitMQ是如何使用如何生产消息&#xff0c;本章不做过多介绍&#xff0c;感兴趣的小伙伴可以参考&#xff1a;从源码层级深入探索 Spring AMQP 如何在 Spring Boot 中实现 RabbitMQ 集成——生产者…

修改vscode中emmet中jsx和tsx语法中className的扩展符号从单引号到双引号 - HTML代码补全 - 单引号双引号

效果图 实现步骤 文件 > 首选项 > 设置搜索“”在settings.json中修改&#xff0c;增加 "emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"attr_quotes": "double","…

【小白51单片机专用教程】protues仿真AT89C51入门

课程特点 无需开发板0基础教学软件硬件双修辅助入门 本课程面对纯小白&#xff0c;因此会对各个新出现的知识点在实例基础上进行详细讲解&#xff0c;有相关知识的可以直接跳过。课程涉及protues基本操作、原理图设计、数电模电、kell使用、C语言基本内容&#xff0c;所有涉及…

ARMS 用户体验监控正式发布原生鸿蒙应用 SDK

作者&#xff1a;羿莉 背景 对企业数据进行敏感数据扫描和保护可以提升企业或组织的数据安全。一方面敏感数据可能包括个人身份信息、财务记录、医疗记录等&#xff0c;定期扫描这些数据可以防止未经授权的访问和泄露。 另一方面&#xff0c;许多国家和地区都有关于数据保护的…

Redis和数据库的一致性(Canal+MQ)

想要保证缓存与数据库的双写一致&#xff0c;一共有4种方式&#xff0c;即4种同步策略&#xff1a; 先更新缓存&#xff0c;再更新数据库&#xff1b;先更新数据库&#xff0c;再更新缓存&#xff1b;先删除缓存&#xff0c;再更新数据库&#xff1b;先更新数据库&#xff0c;再…

spring学习(spring-bean实例化(无参构造与有参构造方法实现)详解)

目录 一、spring容器之bean的实例化。 &#xff08;1&#xff09;"bean"基本概念。 &#xff08;2&#xff09;spring-bean实例化的几种方式。 二、spring容器使用"构造方法"的方式实例化bean。 &#xff08;1&#xff09;无参构造方法实例化bean。 &#…

Qt WORD/PDF(二)使用 QtPdfium库实现 PDF操作、打印等

关于QT Widget 其它文章请点击这里: QT Widget GitHub 源码: QWidgetLearningPro &#xff08;暂未更新&#xff09; 姊妹篇: Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 预览 一、简介 QtPdfium 是基于Pdfium库的一个Qt绑定。Pdfium是一个…

【Leecode】Leecode刷题之路第82天之删除排序链表中的重复元素II

题目出处 82-删除排序链表中的重复元素 II-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 82-删除排序链表中的重复元素 II-官方解法 方法1&#xff1a;一次遍历 思路&#xff1a; 代码…

IDEA 可视化使用 git rebase 合并分支步骤 使git分支树保持整洁

模拟环境 dev 分支开发完一个功能&#xff0c;需要合并到 master 分支&#xff0c;如果现在直接 merge 合并的话 git分支树会出现杂乱分叉&#xff0c;先把 master 分支 rebase 到 dev git分支树就会是整洁的一条直线 git rebase介绍 rebase:翻译成中文是重新设定&#xff0c;…

短信验证码burp姿势

首先声明&#xff0c;本文仅仅作为学习使用&#xff0c;因个人原因导致的后果&#xff0c;皆有个人承担&#xff0c;本人没有任何责任。 在之前的burp学习中&#xff0c;我们学习了图片验证码的突破&#xff0c;但是现实中还有很多短信验证码&#xff0c;在此我介绍几种短信验…

你知道OSI参考模型是什么吗?

你知道OSI参考模型是什么吗&#xff1f; 一. OSI模型图解二. OSI七层模型三. OSI模型的特点四. OSI模型与TCP/IP模型的对比五. 总结 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱…