问题
我们都知道如何使用蓝图创建一个游戏模式并且在这个游戏模式蓝图中去设置“默认pawn类”、“HUD类”、“玩家控制器类”、“游戏状态类”、“玩家状态类”、“旁观者类”。那么如何使用C++完成该操作呢?
步骤
1. 首先创建“GameMode”、“GameState”、“HUD”、“Pawn”、“PlayerController”、“PlayerState”C++类
2. 在GameMode的头文件中添加“GameState”、“HUD”、“Pawn”、“PlayerController”、“PlayerState”的头文件,这样我们就能在GameMode中拿到这些类的StaticClass
添加一个构造函数
#pragma once
#include "CoreMinimal.h"
#include "MyGameState.h"
#include "MyHUD.h"
#include "MyPawn.h"
#include "MyPlayerController.h"
#include "MyPlayerState.h"
#include "GameFramework/GameMode.h"
#include "MyGameMode.generated.h"
/**
*
*/
UCLASS()
class TESTPROJECT_API AMyGameMode : public AGameMode
{
GENERATED_BODY()
AMyGameMode();
};
3. 在GameMode的源文件中实现构造函数,即设置游戏模式默认使用的pawn类、HUD类、玩家控制器类、游戏状态类、玩家状态类和旁观者类。
#include "MyGameMode.h"
AMyGameMode::AMyGameMode() {
DefaultPawnClass = AMyPawn::StaticClass();
PlayerControllerClass = AMyPlayerController::StaticClass();
GameStateClass = AMyGameState::StaticClass();
PlayerStateClass = AMyPlayerState::StaticClass();
HUDClass = AMyHUD::StaticClass();
}
4. 编译成功后,我们可以在UE编辑器中的世界场景设置中设置游戏模式重载为我们创建的那个GameMode类,此时可以看到游戏模式中的pawn类、HUD类、玩家控制器类、游戏状态类、玩家状态类和旁观者类已经被设置好了。
参考视频:
https://www.bilibili.com/video/BV1Dc411f7nx?p=6&spm_id_from=pageDriver&vd_source=36a3e35639c44bb339f59760641390a8