蓝图实现

创建一个联机地图,我命名为 “ onlineMap01 ” ,然后在角色蓝图中创建两个按钮事件,一个用于打开地图,另一个用于加入创建的地图

 

 

 OpenLevel的options中的listen是指定监听服务器,简单来说就是将当前端设为服务端

可以利用UE编辑器直接开两个标准窗口测试,或者打包到同局域网下进行测试,不过如果是不同电脑,则需要修改ip地址,一端先按1键,创建地图,并将当前端设置为监听服务器,然后通过另一端按2键加入该地图

UEC实现

创建一个联机地图,我命名为 “ onlineMap01 ” ,然后去到角色类中,创建相关函数进行开启服务和加入服务

这里有两种方式加入服务

第一种是通过OpenLevel函数利用ip加入

第二种是通过获取当前玩家的玩家控制器,在利用玩家控制器的Client Travel 函数通过ip加入

头文件,申明所需要的自定义函数

    UFUNCTION(BlueprintCallable)
        void OpenOnlineMap();
    UFUNCTION(BlueprintCallable)
        void CallOpenLevel(const FString& Adr);
    UFUNCTION(BlueprintCallable)
        void CallClientTravel(const FString& Adr);

源代码文件,实现函数功能

// 创建服务
void AOnLineTestingCharacter::OpenOnlineMap()
{
    UWorld* world = GetWorld();
    if (world) {
        // listen 为服务监听器
        world->ServerTravel("/Game/Maps/onlineMap01?listen");
    }
}
// 第一种通过OpenLevel加入
void AOnLineTestingCharacter::CallOpenLevel(const FString& Adr)
{
    UGameplayStatics::OpenLevel(this, *Adr);
}
// 第二种通过角色控制器加入
void AOnLineTestingCharacter::CallClientTravel(const FString& Adr)
{
    APlayerController* PlayerController = GetGameInstance()->GetFirstLocalPlayerController();
    if (PlayerController) {
        // 通过绝对路径加入
        PlayerController->ClientTravel(Adr, ETravelType::TRAVEL_Absolute);
    }
}

 

原文地址:http://www.cnblogs.com/limu-zy/p/16909282.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性