IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity教程2D入门:29音效管理SoundManager -> 正文阅读

[游戏开发]Unity教程2D入门:29音效管理SoundManager

https://www.bilibili.com/video/BV1zE411R7fF

由于过多的AudioSource加载在player上很累赘,这里使用脚本进行音频调用

场景新建SoundManager空物体,并为其新建SoundManager脚本

player身上的AudioSource删掉,脚本的音效调用注释掉

在SoundManager定义一个audioSource

public AudioSource audioSource;

用于调用音源,在定义多个clip存放音效

public AudioClip cherryAudio, hurtAudio, jumpAudio;

接着定义一个公开的函数,用于被调用的jumpAudio

暂停讲解旧的方法:

    public void JumpAudio()
    {
        audioSource.clip = jumpAudio;//替换音源
        audioSource.Play();//音频播放
    }

在player调用该音频函数的脚本:

void jump()
{
    SoundManager soundManager = gameObject.GetComponent<SoundManager>();
    SoundManager.JumpAudio();
}

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

但该方法比较麻烦,所以麦扣提出使用静态类的方法:05:38

在SoundManager脚本内,先将SoundManager这个类进行原地实例化

这样就能通过这个实体进行访问这个类的全部函数

    public static SoundManager instance;//把类实例化为instance
    private void Awake()
    {
        instance = this;
    }

然后在player脚本添加调用语句:SoundManager.instance.JumpAudio();即可调用

    void newJump()
    {
        if (isGround)
        {
            extraJump = 1;
        }
        if(Input.GetKeyDown(KeyCode.U) && extraJump > 0)
        {
            rb.velocity = Vector2.up * jumpforce;//这里相当于 = new Vector2 (0 , 1) * jumpforce
            extraJump--;
            SoundManager.instance.JumpAudio();//<<===============
            anim.SetBool("jumping", true);
        }
    }

接着受伤和樱桃代码,下面是SoundManager全部

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

public class SoundManager : MonoBehaviour
{
    public static SoundManager instance;
    public AudioSource audioSource;
    [SerializeField]
    private AudioClip cherryAudio, hurtAudio, jumpAudio;

    private void Awake()
    {
        instance = this;
    }
    public void JumpAudio()
    {
        audioSource.clip = jumpAudio;
        audioSource.Play();
    }
    public void HurtAudio()
    {
        audioSource.clip = hurtAudio;
        audioSource.Play();
    }
    public void CherryAudio()
    {
        audioSource.clip = cherryAudio;
        audioSource.Play();
    }
}

自行添加樱桃和受伤时player脚本的调用代码

最后给SoundManager添加一个audiosource放入BGM即可

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 11:11:09  更:2021-09-10 11:11:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:45:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码