0%

UE(1):基础

UE C++头文件含义+宏作用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Copyright Epic Games, Inc. All Rights Reserved.

#pragma once // 预处理指令,头文件只被编译一次

#include "CoreMinimal.h" // 核心编程环境普遍存在类型
#include "GameFramework/GameModeBase.h" // 基于Game类生成的
#include "MyProject2GameModeBase.generated.h" // 存储反射数据

/**
*
*/
UCLASS() // 告知虚幻引擎生成类的反射数据
// UPROPERTY:属性声明宏,虚幻C++在标准基础上实现了一套反射系统(负责垃圾回收、引用更新、编辑器集成等作用),作用:声明该属性在反射系统的行为
// UFUNCTION/USTRUCT/UENUM:函数/结构体/枚举声明宏,反射系统可识别的C++函数/结构体/枚举
class MYPROJECT2_API AMyProject2GameModeBase : public AGameModeBase
{
GENERATED_BODY() // 自动生成的宏
// 表示不直接使用父类的构造函数,需要在头文件中声明构造函数并在cpp中实现,之后的成员是private
// GENERATED_UCLASS_BODY():使用父类的构造函数,之后的成员是public

};

创建默认类

Gamemode 的头文件里包含其他头文件、声明构造函数,在cpp中实现构造函数,创建默认类

1
2
3
4
5
6
7
8
AMyGameMode::AMyGameMode() {
// 获取我们创建的类
DefaultPawnClass = AMyPawn::StaticClass();
PlayerControllerClass = AMyPlayerController::StaticClass();
GameStateClass = AMyGameState::StaticClass();
PlayerStateClass = AMyPlayerState::StaticClass();
HUDClass = AMyHUD::StaticClass();
}

重写BeginPlay\Tick\EndPlay

GameMode.h中的类中添加

1
2
3
4
5
6
7
public:
// 游戏运行的时候一开始就会执行BeginPlay函数
virtual void BeginPlay() override;
// 游戏运行的时候每一帧都在执行Tick函数
virtual void Tick(float DeltaTime) override;
// 退出游戏的时候或者切换/卸载关卡的时候执行EndPlay函数
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;

GameMode.cpp中实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void AMyGameMode::BeginPlay()
{
Super::BeginPlay();
}

void AMyGameMode::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}

void AMyGameMode::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
Super::EndPlay(EndPlayReason);
}

打印日志/屏幕上打印

1
2
3
4
5
6
7
8
9
10
// 打印日志
// LogTemp临时日志记录类别名称,Warning日志记录的级别,TEXT是打印的文本
// 日志的记录级别(三种):Error>Warning>Display,打印颜色也不一样红/黄/白
UE_LOG(LogTemp, Error, TEXT("My name is ok"));
UE_LOG(LogTemp, Warning, TEXT("My name is ok"));
UE_LOG(LogTemp, Display, TEXT("My name is ok"));

// 打印到屏幕上
// -1 默认值,0.5 打印显示的时间,FColor::Red 显示的颜色,TEXT 文本内容
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("I love ws"));

启动运行后,窗口—>输出日志

image-20240819195008973

场景中

image-20240819194257883