jquave 发表于 2022-1-11 09:32

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;
   
    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即可
页: [1]
查看完整版本: Unity教程2D入门:29音效管理SoundManager