当前位置: 首页 > news >正文

《UE5_C++多人TPS完整教程》学习笔记4 ——《P5 局域网连接(LAN Connection)》


本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P5 局域网连接(LAN Connection)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。


文章目录

  • P5 局域网连接
  • 5.1 使用 C++ 编写函数实现 LAN 连接
  • 5.2 进行 LAN 连接测试
  • 5.3 Summary


P5 局域网连接

本节课将介绍如何使用 C++ 函数而非蓝图编程实现 《P4 测试多人游戏(Testing Mutiplayer)》 的 LAN 连接逻辑,并在两台设备上进行 LAN 连接测试。
在这里插入图片描述


5.1 使用 C++ 编写函数实现 LAN 连接

本小节将使用 C++ 函数而非蓝图编程实现 LAN 连接逻辑,然后在两台设备上进行 LAN 连接测试。

  1. 在虚幻引擎编辑器菜单栏中选择 “工具” ,然后在弹出的下拉菜单栏中点击 “打开 Visual Studio”。

    Notes
    需要先安装 Visual Studio Integration Tool 插件并在虚幻引擎插件浏览器窗口中启用 ,否则会出现错误提示 “增强型 Umreal Engine 支持需要使用免责的 Visual Studio Integration Tool 插件”。
    在这里插入图片描述
    安装方法参见官方文档《Install Visual Studio Tools for Unreal Engine》 以及 《解决ue4的Visual Studio Integration一直显示未安装》。

  2. 在右侧资源方案解决管理器中展开 “Games/MPTesting/Source/MPteting”,找到 “MPTestingCharacter.h”,添加打开 Lobby 关卡函数 “OpenLobby”,并使用 “UFUNCTION” 关键字设置该函数属性为 “BlueprintCallable”(蓝图可调用)。将光标移动至 “OpenLobby()”上,可以看到出现了一个 “刷子” 按钮,点击按钮,在弹出的下拉菜单栏中选择 “Create definition of 'OpenLobby' in MPTestingCharacter.cpp”,在 “MPTestingCharacter.cpp” 中就可以看到 Visual Studio 自动写好了函数定义的代码框架。同理再添加函数 “CallOpenLevel” 和 “CallClientTravel”,它们将以两种不同的方式进行 LAN 连接。

    /* P5 局域网连接(LAN Connection)*/
    UFUNCTION(BlueprintCallable)
    void OpenLobby() const;UFUNCTION(BlueprintCallable)
    void CallOpenLevel(const FString& Address);UFUNCTION(BlueprintCallable)
    void CallClientTravel(const FString& Address);
    /* P5 局域网连接(LAN Connection)*/
    

    在这里插入图片描述
    在这里插入图片描述

  3. 编写函数 “OpenLobby”、“CallOpenLevel” 和 “CallClientTravel”。

    /* P5 局域网连接(LAN Connection)*/
    void AMPTestingCharacter::OpenLobby() const
    {UWorld* World = GetWorld();	if (World) {// Uworld->ServerTravel:https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/Engine/UWorld/ServerTravel/World->ServerTravel("/Game/ThirdPerson/Maps/Lobby?listen");	// 作为监听服务器打开 Lobby 关卡}
    }void AMPTestingCharacter::CallOpenLevel(const FString& Address)
    {// UGameplayStatics::OpenLevel: https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/Kismet/UGameplayStatics/OpenLevel/// 先添加头文件 "#include "Kismet/GameplayStatics.h""UGameplayStatics::OpenLevel(this, *Address);}void AMPTestingCharacter::CallClientTravel(const FString& Address)
    {APlayerController* PlayerController = GetGameInstance()->GetFirstLocalPlayerController();if (PlayerController) {PlayerController->ClientTravel(Address, ETravelType::TRAVEL_Absolute); // UGameplayStatics::OpenLevel 接收 FNanme 类型输入而 PlayerController->ClientTravel 接收 FString 类型输入}
    }
    /* P5 局域网连接(LAN Connection)*/
    

    Notes
    通过在内容浏览器中悬停鼠标至 Lobby 上可以查看相对路径 "/Game/ThirdPerson/Maps/Lobby?listen"
    在这里插入图片描述
    进行 PIE 测试时出现以下报错信息,Lobby 关卡无法打开,但将项目打包后运行可以正常打开,具体原因未知。
    在这里插入图片描述

  4. 代码写好后进行编译并生成解决方案。这里有两种方案:
    ① 离线编译(不推荐):需要先关闭虚幻引擎编辑器,否则会报错(见下图),然后在 Visual Studio 菜单栏中选择 “生成(B)”,在下拉菜单栏中点击 “生成解决方案(B)   F7” 或 “重新生成解决方案(B)   Ctrl+Alt+F11” ;或者直接像教学视频那样使用快捷键 Ctrl+Shift+B。
    在这里插入图片描述
    实时编译(※,强烈推荐):使用快捷键 Ctrl+Alt+F11,编译过程会弹出虚幻引擎的 Live Coding 窗口,无需先关闭虚幻引擎编辑器然后再重启打开项目进行代码的测试。
    在这里插入图片描述

  5. 转到 “BP_ThirdPersonCharacter” 蓝图编辑器窗口,删除先前从节点 “1”、“2” “Pressed” 引脚处连接的节点,然后再分别从节点 “1”,“2”,“3” 的 “Pressed” 引脚处连接我们自己新定义的节点 “OpenLobby”、“CallOpenLevel” 和 “CallClientTravel”,并且修改“CallOpenLevel” 和 “CallClientTravel” 的 “Address” 选项为本机(设备1) IP 地址。最后,点击工具栏上的 “编译” 和 “保存” 按钮。
    在这里插入图片描述


5.2 进行 LAN 连接测试

本小节将将项目打包后在两台不同的设备上测试 LAN 连接。

  1. 在设备 1 上将项目打包后运行 “MPTesting.exe”,在游戏窗口打开后按下 “1” 键,可以看到成功由默认关卡 “ThirdpersonMap” 跳转到关卡 “Lobby”。
    在这里插入图片描述
    在这里插入图片描述

  2. 将打包好的项目发送到另一台设备(设备 2)上,进行 LAN 连接测试。在设备 2 上运行 “MPTesting.exe”,在游戏窗口打开后按下 “2” 键或 “3” 键,均可以看到成功由默认关卡 “ThirdpersonMap” 跳转到设备1的关卡 “Lobby”,并且关卡中有两个 Character,说明前文的两种 LAN 连接方式均可行。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


5.3 Summary

本节课介绍了如何使用 C++ 函数而非蓝图编程实现 《P4 测试多人游戏(Testing Mutiplayer)》 的 LAN 连接逻辑以及在两台设备上再次进行 LAN 连接测试。
在这里插入图片描述

5.1 使用 C++ 编写函数实现 LAN 连接步骤 1 中,打开 Visual Studio 时如果出现错误提示 “增强型 Umreal Engine 支持需要使用免责的 Visual Studio Integration Tool 插件”,则需要先安装好 Visual Studio Integration Tool 插件,可以参阅官方文档《Install Visual Studio Tools for Unreal Engine》。
步骤 4 中编译项目时推荐使用按下快捷键 Ctrl + Alt + F11 进行 实时编译 的方法,因为这不需要先关闭虚幻引擎编辑器然后再重新启动以检验代码编译后的效果。


相关文章:

  • re:从0开始的CSS之旅 13. 文档流
  • VueCLI核心知识综合案例TodoList
  • Android 自定义BaseFragment
  • Panalog 日志审计系统 sessiptbl.php 前台RCE漏洞复现
  • 蓝桥杯(Web大学组)2022国赛真题:水果消消乐
  • Python学习之路-爬虫进阶:爬虫框架雏形
  • 构建智慧交通平台:架构设计与实现
  • Python爬虫——解析库安装(1)
  • 【操作系统】Ubuntu Swap内存扩容
  • 【30秒看懂大数据】数据标准
  • AlmaLinux更换鼠标样式为Windows样式
  • WordPress函数wptexturize的介绍及用法示例,字符串替换为HTML实体
  • 随机过程及应用学习笔记(四) 马尔可夫过程
  • LLVM实战之LLVM bitcode转换成目标平台汇编码
  • 【30秒看懂大数据】数据中台
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • chrome扩展demo1-小时钟
  • classpath对获取配置文件的影响
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6语法详解(一)
  • gcc介绍及安装
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • magento 货币换算
  • MySQL几个简单SQL的优化
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • PHP 小技巧
  • Python学习之路13-记分
  • Rancher如何对接Ceph-RBD块存储
  • Solarized Scheme
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue-loader 源码解析系列之 selector
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • ------- 计算机网络基础
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 优秀架构师必须掌握的架构思维
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​Python 3 新特性:类型注解
  • ​ssh免密码登录设置及问题总结
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $GOPATH/go.mod exists but should not goland
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (ros//EnvironmentVariables)ros环境变量
  • (solr系列:一)使用tomcat部署solr服务
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (一一四)第九章编程练习
  • (转)使用VMware vSphere标准交换机设置网络连接
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • . Flume面试题