Unity进阶第五章-声音管理器

2023-11-11

(1)创建Managers和AudioManager两个脚本
在这里插入图片描述
(2)AudioManager:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AudioManager : ManageBase<AudioManager>
{
    //环境音
    private AudioSource envPlayer;
    //音效
    private AudioSource sePlayer;
    //音乐
    private AudioSource Player;
    void Start()
    {
        //音乐
        Player = gameObject.AddComponent<AudioSource>();
        Player.loop = true;
        //音效
        sePlayer = gameObject.AddComponent<AudioSource>();
        //环境音
        envPlayer = gameObject.AddComponent<AudioSource>();
        //切换场景禁止销毁
        GameObject.DontDestroyOnLoad(gameObject);
    }
    //播放音乐 通过文件名来播放AudioClip
    public void PlayMusic(string name, float volume = 1)
    {
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlayMusic(clip, volume);
    }
    public void PlayMusic(AudioClip clip, float volume = 1)
    {
        //声音
        Player.volume = volume;
        //声音判断
        if (Player.isPlaying)
        {
            Player.Stop();
        }
        Player.clip = clip;
        Player.Play();
    }
    //停止播放
    public void StopMusic()
    {
        Player.Stop();
    }
    //改变音乐声音
    public void ChangeMusicVolume(float volume)
    {
        Player.volume = volume;
    }
    //播放环境音
    public void PlayEnvMusic(string name, float volume = 1)
    {
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlayEnvMusic(clip, volume);
    }
    public void PlayEnvMusic(AudioClip clip, float volume = 1)
    {
        if (envPlayer.isPlaying)
        {
            envPlayer.Stop();
        }
        envPlayer.clip = clip;
        envPlayer.volume = volume;
        envPlayer.Play();
    }
    //停止环境音
    public void StopEnvMusic()
    {
        envPlayer.Stop();
    }
    //播放音效
    public void PlaySeSound(string name,float volume = 1)
    {
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlaySeSound(clip, volume); 
    }
    public void PlaySeSound(AudioClip clip,float volume = 1)
    {
        sePlayer.PlayOneShot(clip,volume);
    }
    //在某个物体上面播放音效
    public void PlaySeSoundOnObject(string name,GameObject go,float volume=1)
    {
        AudioClip clip = Resources.Load<AudioClip>(name);
        PlaySeSoundOnObject(clip, go, volume);
    }
    public void PlaySeSoundOnObject(AudioClip clip,GameObject go,float volume=1)
    {
        AudioSource player = go.GetComponent<AudioSource>();
        if (player == null)
        {
            player = go.AddComponent<AudioSource>();
        }
        player.volume = volume;
        player.PlayOneShot(clip);                                   
    }
    
}

(3)Managers:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Managers 
{
    public static AudioManager m_Audio = AudioManager.Instance;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity进阶第五章-声音管理器 的相关文章

  • LINQ to XML - 如何正确使用 XDocument

    现在我首先要说的是 这确实是一项任务 然而 在我遇到 Linq to XML 语法之前 我几乎已经完成了它 我有 2 个课程 曲目和 CD 现在作为作业的一部分 我创建了一张 CD 然后向其中添加了一些曲目 在搜索了大量完美解释了如何从 x
  • 将 2D 数组映射到 1D 数组

    我想用一维数组来表示一个二维数组 函数将传递两个索引 x y 和要存储的值 这两个索引代表一维数组的单个元素 并相应地设置它 我知道一维数组需要具有 arrayWidth arrayHeight 的大小 但我不知道如何设置每个元素 例如 如
  • 测试 hdf5/c++ 中的组是否存在

    我正在打开一个现有的 HDF5 文件来附加数据 我想向那个叫做的小组保证 A存在以供后续访问 我正在寻找一种简单的方法来创建 A有条件地 如果不存在则创建并返回新组 或者返回现有组 一种方法是测试 A存在 我怎样才能高效地做到这一点 根据
  • .NET 可移植类库中的 .ToShortDateString 发生了什么

    我想知道为什么没有 ToShortDateString在 NET 可移植类库中 我有 2 个项目 Silverlight 和常规 NET 类库 使用相同的代码 并且代码涉及调用 ToShortDateString on a DateTime
  • 在 Windows Phone 上启动 pdf 文件时出现 System.Runtime.InteropServices.COMException

    我正在尝试使用我之前在另一个应用程序上使用过的以下工作代码打开 pdf 文件 但这一次 当流程到达此行时 我收到 System Runtime InteropServices COMException Windows System Laun
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • 身份未映射异常

    System Security Principal IdentityNotMappedException 无法转换部分或全部身份引用 该错误仅在应用程序注册后出现一次 当 SecurityIdentifier 无法映射时 例如 返回 Ide
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • 通过 mpi 发送 c++ std::vector

    我知道存储一个std vector
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 使用 Linq 进行异步Where过滤

    我有一个List通过填充的元素async调用 WebService 没问题 我需要过滤该列表以便在应用程序视图上显示某些内容 我试过这个 List
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • 编写专门用于类及其子类的函数模板

    我正在尝试编写一个函数模板 一个版本应该用于不满足另一版本标准的所有类型 当参数是给定类的基类或该类本身时 应使用另一个版本 我尝试过超载Base 但是当类派生自Base 他们使用通用的 而不是特定的 我也尝试过这种 SFINAE 方法 s
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • SSBO 是更大的 UBO?

    我目前正在 OpenGL 4 3 中使用 UBO 进行渲染 以将所有常量数据存储在 GPU 上 诸如材料描述 矩阵等内容 它可以工作 但是 UBO 的小尺寸 我的实现为 64kB 迫使我多次切换缓冲区 减慢渲染速度 我正在寻找类似的方法来存
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • ASP.NET Core:会话 ID 始终变化

    今天启动了一个全新的 ASP NET Core 网站 按照说明添加会话 我们在索引页上打印出会话 ID 它始终是唯一的 我认为这可能是 cookie 合规性 所以我在 Chrome 的高级设置和调试器中删除了所有 cookie 但横幅不会再
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • 什么是spark机器学习

    Spark机器学习 Spark ML 是Apache Spark的一个模块 用于进行大规模数据处理和机器学习任务 它提供了一组丰富的工具和算法 用于构建和训练机器学习模型 以及进行数据预处理和特征工程 Spark ML的设计目标是高效处理大
  • Java把V3音频文件转化为wav文件的算法的代码

    将写内容过程经常用到的内容段做个备份 如下内容内容是关于Java把V3音频文件转化为wav文件的算法的内容 import java io BufferedInputStream import java io BufferedOutputSt
  • C语言解决猴子分桃问题的代码

    研发闲暇时间 把做工程过程中经常用的代码片段做个记录 如下的资料是关于C语言解决猴子分桃问题的代码 希望能对大家有较大帮助 main int i m j k count for i 4 i lt 10000 i 4 count 0 m i
  • Q_UNUSED ( name ) 的用法

    一 用法 Q UNUSED 没有实质性的作用 用来避免编译器警告 for example int transition getSTL int type Q UNUSED type return 123 二 相关问题处理 如果编译中出现以下警
  • MySQL之窗口函数

    目录 1 窗口函数基本概念 2 窗口函数和普通聚合函数的区别 3 常见的窗口函数 4 窗口函数的使用 5 示例代码 聚合函数也可以作为窗口函数 聚合函数VS窗口函数 常见窗口函数的使用 编辑给窗口指定别名 怎么样得到各部门工资排名前N名员工
  • C++的noexcept

    在C 中 noexcept是一个异常说明符 用于告知编译器一个函数是否会抛出异常 使用noexcept可以提供编译器有关函数异常处理的信息 从而优化代码 noexcept有两种形式 noexcept和noexcept expression
  • 10种流行的Java框架

    任何框架都是有助于更快更好地开发软件解决方案的工具之一 框架的基本原理不必重新发明轮子 框架使开发人员的工作变得更轻松 并帮助他们专注于业务逻辑 而不必担心通用的代码段 而且由于Java并不是最简单的编程语言之一 因此框架在这里绝对是有用的
  • Apache Doris 快速入门

    1 基本概念 FE Frontend 前端节点 接收用户查询请求 SQL解析 执行计划生成 元数据管理 节点管理等 BE Backend 后端节点 数据存储 执行查询计划 前端节点FE 和 后端节点BE 各自独立运行 互不影响 broker
  • Huggingface Transformers简约教程(二)

    写在前面 致敬所有前辈 知乎上的transformers 教程 博客园上的Colab 使用教程 huggingface 官网 6 设计思想 The library was designed with two strong goals in
  • 【Java并发】生产者消费者模型 - 两线程交替打印1-100

    生产者消费者模型 以下是其中一种通过synchronize的实现 import java util Queue import java util LinkedList public class ProducerAndConsumer pri
  • ppa:jonathonf/python-3.6 报错解决办法

    ubuntu16 04 python3 6 入 ppa jonathonf python 3 6 ppa 使 非公開 困 変更前 sudo add apt repository ppa jonathonf python 3 6 sudo a
  • 单目双目标定

    本文用QT调用OpenCV4 5 1进行相机标定 头文件如下 include
  • 搭建NFS使多个服务器中的web项目共享图片资源

    我的个人博客 逐步前行STEP 有一个使用laravel框架的项目 采用laravel自带的文件管理系统 还有一个使用laravel admin扩展的管理端 更是依赖于自带的文件管理系统 因部署了多台服务器 需要打通数据 考虑了各种方案 比
  • c++设计函数查找数组中的最大和最小元素,并计算去除最大和最小后元素的平均值

    第一串代码为精简版 include
  • 进程的四大分段

    在一个终端 ubuntu 上 在运行一个进程时 如 a out 此时他会开辟一个空间 此空间被粗略的分为四个段 如下图所示 注意 常量属于代码段 将代码编译成二进制流文件 存放在代码段 在一个进程中 他的全局变量 静态变量以及常量全部存放在
  • 【系列 3】vue依赖收集原理与nextTick实现

    一 vue响应式数据依赖收集原理 vue收集依赖的步骤 Watcher监听 一个组件一个Watcher 每次执行 updateComponent 更新当前组件时创建一个 Watcher 监听者 gt Dep target 用来监听该组件执行
  • Unity打包WebGL基础介绍

    一 WebGL Player Setting打包设置 官方参考 Icon web端无图标设置 Resolution and Presentation 设置初始分辨率和显示 Default Canvas Width Height 设置webg
  • 7D透明屏的市场应用广泛,在智能家居中有哪些应用表现?

    7D透明屏是一种新型的显示技术 它能够实现透明度高达70 以上的显示效果 这种屏幕可以应用于各种领域 如商业广告 展览展示 智能家居等 具有广阔的市场前景 7D透明屏的工作原理是利用光学投影技术 将图像通过透明屏幕投射出来 与传统的液晶显示
  • 【面试题Part1 】:测试工具(Selenium+Appium+JMeter+Unittest)

    测试工具的使用经验是面试中的加分项 本节一共 8 个问题 1 1 Selenium是什么 流行的版本有哪些 selenium 是一个用于Web应用程序测试的工具 Selenium测试直接运行在浏览器中 模拟用户操作 通常情况下用于回归测试或
  • Unity进阶第五章-声音管理器

    1 创建Managers和AudioManager两个脚本 2 AudioManager using System Collections using System Collections Generic using UnityEngine