# 【局域网多人游戏】

玩家A创建大厅,然后玩家B通过本地局域网连接,通过玩家A的局域网IP地址,如192.168.xx.xx进行多人联机。

需要创建默认第三人称模版项目,然后创建基础场景命名为Lobby。

在 Character 里使用蓝图进行测试多人联机。

# 蓝图实现方式

Markdown 图片

# c++实现方式

MPTestingCharacter.h

public:
    /** 创建并进入大厅 */
    UFUNCTION(BlueprintCallable)
    void OpenLobby();

    /** 方法A:进入大厅,传入大厅的IP地址 */
    UFUNCTION(BlueprintCallable)
    void CallOpenLevel(const FString& Address);

    /** 方法B:进入大厅,传入大厅的IP地址 */
    UFUNCTION(BlueprintCallable)
    void CallClientTravel(const FString& Address);

MPTestingCharacter.cpp

void AMPTestingCharacter::OpenLobby()
{
    UWorld* World = GetWorld();
    if (World)
    {
        World->ServerTravel("/Game/ThirdPerson/Maps/Lobby?listen");
    }
}

void AMPTestingCharacter::CallOpenLevel(const FString& Address)
{
    UGameplayStatics::OpenLevel(this, *Address);
}

void AMPTestingCharacter::CallClientTravel(const FString& Address)
{
    APlayerController* PlayerController = GetGameInstance()->GetFirstLocalPlayerController();
    if (PlayerController)
    {
        PlayerController->ClientTravel(Address, ETravelType::TRAVEL_Absolute);
    }
}

如下图所示使用蓝图进行测试,按数字键1即可创建大厅,然后在别的玩家处按2或者3进入大厅。

Markdown 图片