🎯 目标
✅ 掌握 UE5 音频系统的基础
✅ 实现背景音乐 (BGM) 播放
✅ 为角色添加脚步声 & 交互音效
✅ 使用 3D 空间音效增强沉浸感
1️⃣ Unreal Engine 5 音频系统简介
UE5 提供了强大的音频引擎,支持:
- 背景音乐(BGM):持续播放的游戏音乐
- 交互音效:如 UI 点击、拾取物品等
- 角色音效:如脚步声、攻击音效
- 3D 空间音效:基于位置的音效,如远处的爆炸声、环境音效
🎯 本节目标
- 使用
Sound Cue
播放 BGM - 给角色添加脚步声
- 实现交互音效
- 让 3D 空间音效随玩家位置变化
2️⃣ 播放背景音乐 (BGM)
🔹 1. 导入背景音乐
- 在
Content Browser
里,右键Import
导入.wav
音频文件 - 创建
Sound Cue
(可选)- 右键音频 →
Create Sound Cue
- 双击打开
Sound Cue
,可以添加 淡入淡出、循环 等效果
- 右键音频 →
- 命名为
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
- 打开
GameMode
蓝图 - 在
BackgroundMusic
里选择SC_BackgroundMusic
- 运行游戏,检查音乐是否正常播放
✅ 背景音乐将在 GameMode
启动时自动播放!
3️⃣ 添加角色脚步声
🔹 1. 导入脚步音效
- 导入
.wav
文件 - 创建
Sound Cue
,命名SC_Footsteps
- 在
Sound Cue
里- 添加多个脚步音效
- 连接
Random Node
,让脚步音效随机播放
- 保存 & 关闭
🔹 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. 在蓝图中设置脚步音效
- 打开
BP_PlayerCharacter
- 在
FootstepSound
里选择SC_Footsteps
- 运行游戏,检查角色移动时是否播放脚步声
✅ 现在,角色行走时会自动播放脚步声!
4️⃣ 交互音效
🔹 1. 导入 UI 点击音效
- 导入
.wav
音频 - 创建
Sound Cue
,命名SC_UI_Click
- 设置为短促音效
🔹 2. 在蓝图绑定 UI 音效
- 打开
WBP_MainMenu
- 选中
StartGameButton
- 在
OnClicked
事件中- 调用
Play Sound 2D
- 选择
SC_UI_Click
- 调用
- 保存 & 关闭
✅ 点击按钮时,会播放 UI 交互音效!
5️⃣ 3D 空间音效
🔹 1. 创建 3D 环境音效
- 导入环境音效
.wav
- 右键音频文件 →
Create Sound Cue
- 双击
Sound Cue
- 勾选
Attenuation
(衰减) - 调整
3D Sound Settings
- 设置
Radius
,让音效在一定距离内可听见
- 勾选
- 保存 & 关闭
🔹 2. 在场景中放置 3D 音效
- 在
GameLevel
里 - 拖拽
SC_EnvironmentSound
到场景 - 在
Details
里,勾选Auto Activate
- 运行游戏,检查声音是否随玩家远近变化
✅ 3D 音效现在可以根据玩家位置播放!
🎯 总结
✅ 使用 UGameplayStatics::PlaySound2D
播放背景音乐
✅ 绑定角色脚步声,让角色移动时播放音效
✅ 在 UI 交互中播放音效,增强反馈体验
✅ 创建 3D 空间音效,实现真实的音频环境
🎮 现在,你的游戏拥有动态音效,让游戏更加沉浸!🚀