UE5学习

其他

UE5编译时无法找到头文件 && UE5使用最新C++ && 使用Release库

修改Build.cs文件

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class LibTest : ModuleRules
{
    public LibTest(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
        PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
        PrivateDependencyModuleNames.AddRange(new string[] {  });

        // 最新C++标准
        CppStandard = CppStandardVersion.Latest;

        // 添加头文件和lib目录
        PublicIncludePaths.Add("C:\\Data\\CPP\\GameProject\\Buffer");
        PublicIncludePaths.Add("C:\\Data\\CPP\\GameProject\\Message");
        PublicAdditionalLibraries.Add("C:\\Data\\CPP\\GameProject\\x64\\Release\\Buffer.lib");
        PublicAdditionalLibraries.Add("C:\\Data\\CPP\\GameProject\\x64\\Release\\Message.lib");
    }
}

VS不识别mingw编译出的库

需要在clion中设置cmake的Generator为VS系列 如 Visual Studio 17 2022

热编译莫名出错

关闭UE5,使用VS直接编译,编译成功后再次打开UE5 后续即可进行正常编译。

命名规范

模板类的前缀为T。
继承自UObject的类前缀为U。
继承自AActor的类前缀为A。
继承自SWidget的类前缀为S。
抽象界面类的前缀为I。
列举的前缀为E。
布尔变量必须以b为前缀(例如 bPendingDestruction 或 bHasFadedIn)。
其他多数类均以F为前缀,而部分子系统则以其他字母为前缀。

常用函数

日志打印

GEngine->AddOnScreenDebugMessage(-1, 1.0f, FColor::Red, FString::Printf(TEXT("DeltaTime: %f"), DeltaTime));
GEngine->AddOnScreenDebugMessage(-1, 1.0f, FColor::Red, FString::Printf(TEXT("FramePerSec: %d"), FramePerSec));

蓝图

使用C++创建蓝图函数库


// .h
UFUNCTION(BlueprintCallback, Category="MyCategory")
static FString HelloUnreal(int a, int b);


// .cpp
static FString XXX::HelloUnreal(int a, int b)
{
    return FString::Printf(TEXT("HelloUnreal %d + %d = %d"), a, b, a + b);
}