二、游戏模式
当前创建的游戏模式是在游戏时在一定人数情况下进行地图转移
三、创建一个C++类继承GameModel类
1.创建类,写代码
xxx.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/GameMode.h"
#include "LobbyGameMode.generated.h"
/**
*
*/
UCLASS()
class BLASTER_API ALobbyGameMode : public AGameMode
{
GENERATED_BODY()
public:
virtual void PostLogin(APlayerController* NewPlayer) override;
};
xxx.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "LobbyGameMode.h"
#include "GameFramework/GameState.h"
void ALobbyGameMode::PostLogin(APlayerController* NewPlayer)
{
Super::PostLogin(NewPlayer);
int32 NumberPlayers = GameState.Get()->PlayerArray.Num(); /** 通过GameState.Get()获得游戏状态指针 在获得玩家数量 */
/*GEngine->AddOnScreenDebugMessage(
-1,
15.f,
FColor::Yellow,
FString::Printf(TEXT("%d"), NumberPlayers)
);*/
if (NumberPlayers == 2)
{
UWorld* World = GetWorld();
if (World)
{
bUseSeamlessTravel = true; /** 无缝旅行标志位 */
World->ServerTravel(FString("/Game/Maps/BlasterMap?listen")); /** 以侦听服务器打开,供客户端连接到 */
}
}
}
2.创建对应蓝图类
3.双击打开蓝图类->点击类设置->将细节中的类的默认pawn类设置成人物蓝图类如图
4.将地图的世界场景设置中游戏模式的游戏模式重载设置为刚才的游戏模式蓝图类
5.创建一个中间地图起名为travleve在项目设置中将默认地图的转移地图设置为travleve