Unity——音乐、音效

在游戏运行的过程中,音效的播放时机与游戏当前内容密切相关,而且随着场景的变化、剧情的推进,背景音乐也需要适时切换,所以恰当地控制音乐和音效的播放非常重要。音乐和音效的播放、停止、切换和音量变化等,都需要由脚本控制。


一、用脚本控制音乐播放

简单来说只要有Audio Source组件和音频资源就可以播放音乐了。但通常还需要停止、切换音乐等,下文用一个示例脚本说明音乐的播放方法,步骤如下

  1. 创建脚本TestAudio,挂到任意物体上
  2. 创建音源物体,默认物体名为Audio Source

脚本内容如下

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestAudio : MonoBehaviour
{
    //从外部指定声音片段
    public List<AudioClip> clips;
    //音源组件
    AudioSource audio;

    void Start()
    {
        //获取音源组件
        GameObject go = GameObject.Find("Audio Source");
        audio = go.GetComponent<AudioSource>();
        //先停止播放
        audio.Stop();
        //不循环
        audio.loop=false;
    }

    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Alpha1))
        {
            //切换到音乐0并播放
            audio.clip=clips[0];
            audio.Play();
        }
        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            //切换到音乐1并播放
            audio.clip = clips[1];
            audio.Play();
        }
        //按空格键 暂停/继续
        if (Input.GetKeyDown(KeyCode.Space))
        {
           if(audio.isPlaying)
            {
                audio.Pause();
            }
            else
            {
                audio.UnPause();
            }
        }
    }
}

脚本功能是按数字播放第一段音频,按播放第二段,按空格可以暂停或继续播放

脚本用到了一个公开的列表字段保存音频资源。要为变量clips赋初始值。

上面演示了Audio Source组件的常用方法,音源的属性都可以用脚本修改

二、添加音效

在Unity中使用音乐和音效的方法是相同的,但有一些关键点要注意。

首先,一个音源同一时刻只能播放一个音频。换句话说,如果有10个音效同时播放,就需要10个音源。因此一般游戏中的每个角色身上都带有一个Audio Source组件,如敌人会叫喊,主角会挥动武器,那么就在每个敌人和主角身上都挂一个Audio Source组件。如果主角的武器音效、跳跃音效和受伤音效可能会同时播放,那么可以在主角身上挂3个Audio Source组件,分别对应一种音效(当然,也可以把Audio Source组件放在其他物体上)。

其次,添加音效的难点在于音效播放的时机,音效比角色动作稍早或稍晚播放都不好。而且根据游戏逻辑,同样的动作有时需要配合音效,又是不需要,那么弄清楚播放音效的条件也很重要。

相关推荐
爱吃小胖橘5 小时前
Unity资源加载模块全解析
开发语言·unity·c#·游戏引擎
井队Tell7 小时前
打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第九天)
学习·3d·unity
千年奇葩17 小时前
Unity性能优化之:利用CUDA加速Unity实现大规模并行计算。从环境搭建到实战案例
c++·人工智能·unity·游戏引擎·cuda
AA陈超17 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-25 属性信息数据资产
c++·游戏·ue5·游戏引擎·虚幻
17岁的勇气21 小时前
Unity Shader unity文档学习笔记(二十二):雪地几种实现方式(1. 2D贴花式 2.3D曲面细分并且实现顶点偏移)
笔记·学习·unity·shader
科技快报1 天前
引入实时 3D 渲染技术,地平线与 Unity 开启车载交互空间化时代
3d·unity·交互
爱吃小胖橘1 天前
高效对象池设计:提升Unity性能的关键
开发语言·unity·c#·游戏引擎
沉默的记录者1 天前
unity 2021反向遮罩的毛边
unity·游戏引擎
沧海归城1 天前
Unity_Canvas_Canvas Scaler画布缩放器。
unity·游戏引擎
一只一只2 天前
Unity 3D笔记(进阶部分)——《B站阿发你好》
笔记·3d·unity·游戏引擎