第 18 天:音频系统,给你的游戏加点声音!

🎯 目标

掌握 UE5 音频系统的基础
实现背景音乐 (BGM) 播放
为角色添加脚步声 & 交互音效
使用 3D 空间音效增强沉浸感


1️⃣ Unreal Engine 5 音频系统简介

UE5 提供了强大的音频引擎,支持:

  • 背景音乐(BGM):持续播放的游戏音乐
  • 交互音效:如 UI 点击、拾取物品等
  • 角色音效:如脚步声、攻击音效
  • 3D 空间音效:基于位置的音效,如远处的爆炸声、环境音效

🎯 本节目标

  1. 使用 Sound Cue 播放 BGM
  2. 给角色添加脚步声
  3. 实现交互音效
  4. 让 3D 空间音效随玩家位置变化

2️⃣ 播放背景音乐 (BGM)

🔹 1. 导入背景音乐

  1. Content Browser 里,右键 Import 导入 .wav 音频文件
  2. 创建 Sound Cue(可选)
    • 右键音频 → Create Sound Cue
    • 双击打开 Sound Cue,可以添加 淡入淡出、循环 等效果
  3. 命名为 SC_BackgroundMusic

🔹 2. 在 C++ 播放 BGM

📌 修改 GameMode.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "Sound/SoundBase.h"
#include "MyGameMode.generated.h"

UCLASS()
class MYGAME_API AMyGameMode : public AGameModeBase
{
    GENERATED_BODY()

public:
    virtual void BeginPlay() override;

    UPROPERTY(EditAnywhere, Category = "Audio")
    USoundBase* BackgroundMusic;
};

📌 修改 GameMode.cpp

#include "MyGameMode.h"
#include "Kismet/GameplayStatics.h"

void AMyGameMode::BeginPlay()
{
    Super::BeginPlay();

    // **播放背景音乐**
    if (BackgroundMusic)
    {
        UGameplayStatics::PlaySound2D(GetWorld(), BackgroundMusic);
    }
}

🔹 3. 在蓝图中设置 BGM

  1. 打开 GameMode 蓝图
  2. BackgroundMusic 里选择 SC_BackgroundMusic
  3. 运行游戏,检查音乐是否正常播放

背景音乐将在 GameMode 启动时自动播放!


3️⃣ 添加角色脚步声

🔹 1. 导入脚步音效

  1. 导入 .wav 文件
  2. 创建 Sound Cue,命名 SC_Footsteps
  3. Sound Cue
    • 添加多个脚步音效
    • 连接 Random Node,让脚步音效随机播放
  4. 保存 & 关闭

🔹 2. 在 C++ 绑定脚步声

📌 修改 PlayerCharacter.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "Sound/SoundBase.h"
#include "PlayerCharacter.generated.h"

UCLASS()
class MYGAME_API APlayerCharacter : public ACharacter
{
    GENERATED_BODY()

public:
    APlayerCharacter();

protected:
    virtual void BeginPlay() override;

    virtual void Tick(float DeltaTime) override;

    UPROPERTY(EditAnywhere, Category = "Audio")
    USoundBase* FootstepSound;

    void PlayFootstepSound();
};

📌 修改 PlayerCharacter.cpp

#include "PlayerCharacter.h"
#include "Kismet/GameplayStatics.h"

APlayerCharacter::APlayerCharacter()
{
    PrimaryActorTick.bCanEverTick = true;
}

void APlayerCharacter::BeginPlay()
{
    Super::BeginPlay();
}

void APlayerCharacter::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

    // **检测角色是否移动**
    if (GetVelocity().Size() > 10.f)
    {
        PlayFootstepSound();
    }
}

void APlayerCharacter::PlayFootstepSound()
{
    if (FootstepSound && GetCharacterMovement()->IsMovingOnGround())
    {
        UGameplayStatics::PlaySoundAtLocation(GetWorld(), FootstepSound, GetActorLocation());
    }
}

🔹 3. 在蓝图中设置脚步音效

  1. 打开 BP_PlayerCharacter
  2. FootstepSound 里选择 SC_Footsteps
  3. 运行游戏,检查角色移动时是否播放脚步声

现在,角色行走时会自动播放脚步声!


4️⃣ 交互音效

🔹 1. 导入 UI 点击音效

  1. 导入 .wav 音频
  2. 创建 Sound Cue,命名 SC_UI_Click
  3. 设置为短促音效

🔹 2. 在蓝图绑定 UI 音效

  1. 打开 WBP_MainMenu
  2. 选中 StartGameButton
  3. OnClicked 事件中
    • 调用 Play Sound 2D
    • 选择 SC_UI_Click
  4. 保存 & 关闭

点击按钮时,会播放 UI 交互音效!


5️⃣ 3D 空间音效

🔹 1. 创建 3D 环境音效

  1. 导入环境音效 .wav
  2. 右键音频文件 → Create Sound Cue
  3. 双击 Sound Cue
    • 勾选 Attenuation(衰减)
    • 调整 3D Sound Settings
    • 设置 Radius,让音效在一定距离内可听见
  4. 保存 & 关闭

🔹 2. 在场景中放置 3D 音效

  1. GameLevel
  2. 拖拽 SC_EnvironmentSound 到场景
  3. Details 里,勾选 Auto Activate
  4. 运行游戏,检查声音是否随玩家远近变化

3D 音效现在可以根据玩家位置播放!


🎯 总结

使用 UGameplayStatics::PlaySound2D 播放背景音乐
绑定角色脚步声,让角色移动时播放音效
在 UI 交互中播放音效,增强反馈体验
创建 3D 空间音效,实现真实的音频环境

🎮 现在,你的游戏拥有动态音效,让游戏更加沉浸!🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bluesonli

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值