Unreal 入门第一季:C++ 编程从环境搭建到第一个游戏类
一、开发环境搭建
【UE4/5 虚幻4/5视频教程】Unreal入门第一季 C++编程学习---789it.top/13813/
1.1 系统要求与工具安装
最低配置:
- 操作系统:Windows 10 64位 或 macOS 10.15+
- CPU:四核 Intel 或 AMD 2.5 GHz+
- 内存:8GB(推荐16GB)
- 显卡:DX11/DX12兼容
- 硬盘空间:100GB SSD(推荐NVMe)
必要工具链:
- Epic Games启动器
- Visual Studio 2019/2022(Windows)或 Xcode(Mac)
- Git(可选,用于版本控制)
# 安装Unreal Engine(通过Epic Games启动器)
1. 启动Epic Games Launcher
2. 导航到"Unreal Engine" → "库"
3. 点击"+"按钮添加引擎版本(推荐5.0+)
4. 选择安装位置并开始安装
1.2 项目创建与配置
创建第一个C++项目:
- 启动Unreal Engine
- 选择"游戏" → "空白"模板
- 项目设置:
- 项目名称:MyFirstGame
- 路径:不含中文和空格的目录
- 语言:C++
- 点击"创建"
VS解决方案生成:
# 如果首次打开未自动生成:
1. 在Unreal编辑器中:工具 → 生成Visual Studio项目文件
2. 等待编译完成(首次较慢)
二、Unreal C++基础
2.1 核心类结构
基础游戏类继承关系:
UObject (基类)
└─ AActor (场景对象基类)
└─ APawn (可控制对象)
└─ ACharacter (带移动组件的Pawn)
└─ UActorComponent (功能组件)
2.2 创建第一个C++类
通过编辑器创建:
- 内容浏览器 → C++类 → 添加
- 选择父类(如Actor)
- 命名:MyFirstActor
- 点击"创建类"
手动创建文件:
// MyFirstActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyFirstActor.generated.h" // 必须包含
UCLASS()
class MYFIRSTGAME_API AMyFirstActor : public AActor
{
GENERATED_BODY()
public:
AMyFirstActor();
protected:
virtual void BeginPlay() override;
public:
virtual void Tick(float DeltaTime) override;
};
// MyFirstActor.cpp
#include "MyFirstActor.h"
AMyFirstActor::AMyFirstActor()
{
PrimaryActorTick.bCanEverTick = true;
}
void AMyFirstActor::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogTemp, Warning, TEXT("Actor已生成!"));
}
void AMyFirstActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
三、游戏类实战开发
3.1 添加可见组件
// 在MyFirstActor.h中添加:
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* MeshComponent;
// 在MyFirstActor.cpp构造函数中:
AMyFirstActor::AMyFirstActor()
{
MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>("Mesh");
RootComponent = MeshComponent; // 设为根组件
// 设置默认网格体(需在内容中导入)
static ConstructorHelpers::FObjectFinder<UStaticMesh> MeshAsset(
TEXT("StaticMesh'/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube'"));
if (MeshAsset.Succeeded())
{
MeshComponent->SetStaticMesh(MeshAsset.Object);
}
}
3.2 实现简单交互
// 在MyFirstActor.h中添加:
UFUNCTION(BlueprintCallable, Category="Gameplay")
void ChangeColor(FLinearColor NewColor);
// 在MyFirstActor.cpp中实现:
void AMyFirstActor::ChangeColor(FLinearColor NewColor)
{
if (MeshComponent)
{
UMaterialInstanceDynamic* DynMaterial =
MeshComponent->CreateAndSetMaterialInstanceDynamic(0);
DynMaterial->SetVectorParameterValue("Color", NewColor);
}
}
四、调试与优化
4.1 调试技巧
控制台输出:
UE_LOG(LogTemp, Warning, TEXT("当前坐标:%s"),
*GetActorLocation().ToString());
// 日志级别:
// Log, Warning, Error, Fatal
屏幕调试信息:
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red,
FString::Printf(TEXT("生命值:%f"), Health));
4.2 性能注意事项
-
避免每帧操作:
// 不好的做法: void Tick() { GetAllActorsOfClass(...); // 昂贵操作 } // 好的做法: void BeginPlay() { GetWorld()->GetTimerManager().SetTimer( TimerHandle, this, &AMyClass::UpdateActors, 1.0f, true); } -
UPROPERTY使用原则:
UPROPERTY(EditAnywhere) // 编辑器可见可编辑 float Speed = 500.0f; UPROPERTY(VisibleDefaultsOnly) // 仅默认值可见 int32 MaxHealth;
五、打包与部署
5.1 构建配置
常用构建命令:
# 开发构建(调试符号)
UnrealEditor-Cmd.exe MyProject.uproject -build=Development
# 发布构建
UnrealEditor-Cmd.exe MyProject.uproject -build=Shipping
5.2 平台打包
Windows打包步骤:
- 编辑器 → 文件 → 打包项目 → Windows → Windows(64-bit)
- 选择输出目录
- 等待构建完成(首次需下载平台工具链)
六、学习资源推荐
-
官方文档:
-
示例项目:
- Lyra Starter Game(UE5官方示例)
- Action RPG(Epic市场免费项目)
-
调试工具:
- Unreal Insights(性能分析)
- RenderDoc(图形调试)
常见问题解决
-
编译错误"无法找到头文件":
- 检查"Build.cs"文件中的PublicDependencyModuleNames
- 执行"生成Visual Studio项目文件"
-
编辑器崩溃:
- 删除Intermediate和Saved目录
- 验证引擎安装
-
蓝图无法调用C++函数:
- 确保使用UFUNCTION宏
- 检查BlueprintCallable/BlueprintPure标签
通过本教程,您已经掌握:
- Unreal C++开发环境配置
- 基础游戏类创建与实现
- 组件系统基本用法
- 调试与优化基础技巧
- 项目打包流程
建议下一步:
- 尝试创建Character类并实现移动
- 学习UMG界面开发
- 探索AI行为树系统
- 研究GameplayAbilitySystem