【UE4/5 虚幻4/5视频教程】Unreal入门第一季 C++编程学习

128 阅读3分钟

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)

必要工具链:

  1. Epic Games启动器
  2. Visual Studio 2019/2022(Windows)或 Xcode(Mac)
  3. Git(可选,用于版本控制)
# 安装Unreal Engine(通过Epic Games启动器)
1. 启动Epic Games Launcher
2. 导航到"Unreal Engine""库"
3. 点击"+"按钮添加引擎版本(推荐5.0+)
4. 选择安装位置并开始安装

1.2 项目创建与配置

创建第一个C++项目:

  1. 启动Unreal Engine
  2. 选择"游戏" → "空白"模板
  3. 项目设置:
    • 项目名称:MyFirstGame
    • 路径:不含中文和空格的目录
    • 语言:C++
  4. 点击"创建"

VS解决方案生成:

# 如果首次打开未自动生成:
1. 在Unreal编辑器中:工具 → 生成Visual Studio项目文件
2. 等待编译完成(首次较慢)

二、Unreal C++基础

2.1 核心类结构

基础游戏类继承关系:

UObject (基类)
   └─ AActor (场景对象基类)
      └─ APawn (可控制对象)
          └─ ACharacter (带移动组件的Pawn)
  └─ UActorComponent (功能组件)

2.2 创建第一个C++类

通过编辑器创建:

  1. 内容浏览器 → C++类 → 添加
  2. 选择父类(如Actor)
  3. 命名:MyFirstActor
  4. 点击"创建类"

手动创建文件:

// 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 性能注意事项

  1. 避免每帧操作

    // 不好的做法:
    void Tick() {
        GetAllActorsOfClass(...); // 昂贵操作
    }
    
    // 好的做法:
    void BeginPlay() {
        GetWorld()->GetTimerManager().SetTimer(
            TimerHandle, this, &AMyClass::UpdateActors, 1.0f, true);
    }
    
  2. 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打包步骤:

  1. 编辑器 → 文件 → 打包项目 → Windows → Windows(64-bit)
  2. 选择输出目录
  3. 等待构建完成(首次需下载平台工具链)

六、学习资源推荐

  1. 官方文档

  2. 示例项目

    • Lyra Starter Game(UE5官方示例)
    • Action RPG(Epic市场免费项目)
  3. 调试工具

    • Unreal Insights(性能分析)
    • RenderDoc(图形调试)

常见问题解决

  1. 编译错误"无法找到头文件"

    • 检查"Build.cs"文件中的PublicDependencyModuleNames
    • 执行"生成Visual Studio项目文件"
  2. 编辑器崩溃

    • 删除Intermediate和Saved目录
    • 验证引擎安装
  3. 蓝图无法调用C++函数

    • 确保使用UFUNCTION宏
    • 检查BlueprintCallable/BlueprintPure标签

通过本教程,您已经掌握:

  • Unreal C++开发环境配置
  • 基础游戏类创建与实现
  • 组件系统基本用法
  • 调试与优化基础技巧
  • 项目打包流程

建议下一步:

  1. 尝试创建Character类并实现移动
  2. 学习UMG界面开发
  3. 探索AI行为树系统
  4. 研究GameplayAbilitySystem