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

news2024/11/25 4:22:47

本文为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 进行 实时编译 的方法,因为这不需要先关闭虚幻引擎编辑器然后再重新启动以检验代码编译后的效果。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1444803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正则可视化工具:学习和编写正则表达式的利器

引言 正则表达式是一种强大的文本匹配和处理工具,但对于初学者和非专业开发者来说,编写和理解正则表达式可能是一项具有挑战性的任务。为了帮助人们更好地学习和编写正则表达式,正则可视化工具应运而生。本文将探讨正则可视化工具的优点&…

LeetCode--代码详解 3.无重复字符的最长子串

3.无重复字符的最长子串 题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: s "bb…

四.Linux实用操作 12-14.环境变量文件的上传和下载压缩和解压

目录 四.Linux实用操作 12.环境变量 环境变量 环境变量--PATH $ 符号 自行设置环境变量 自定义环境变量PATH 总结 四.Linux实用操作 13.文件的上传和下载 上传,下载 rz,sz命令 四.Linux实用操作 14.压缩和解压 压缩格式 tar命令 tar命令压缩…

机器学习:Softmax介绍及代码实现

Softmax原理 Softmax函数用于将分类结果归一化,形成一个概率分布。作用类似于二分类中的Sigmoid函数。 对于一个k维向量z,我们想把这个结果转换为一个k个类别的概率分布p(z)。softmax可以用于实现上述结果,具体计算公式为: 对于…

如何把手机平板变为电脑的屏幕

文章目录 安装软件运行效果结尾 本文首发地址 https://h89.cn/archives/181.html 最新更新地址 https://gitee.com/chenjim/chenjimblog 闲置的手机平板、触屏音箱等,均可作为电脑的扩展屏,为电脑增加一块显示屏,本文介绍如何使用免费的软件s…

【复现】大华 DSS SQL 注入漏洞_46

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 大华DSS是大华的大型监控管理应用平台,支持几乎所有涉及监控等方面的操作,支持多级跨平台联网等操作。 可…

CrossOver虚拟机软件功能相似的软件

与 CrossOver 功能相似的软件有: Wine:Wine 是一款在 Unix 和 Unix-like 系统(如 Linux、macOS)上运行 Windows 应用程序的兼容层。与 CrossOver 类似,Wine 通过模拟 Windows 的 API 来实现应用程序的兼容性。它支持大…

《UE5_C++多人TPS完整教程》学习笔记7 ——《P8 为项目配置 Steam(Configuring A Project for Steam)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P8 为项目配置 Steam(Configuring A Project for Steam)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&…

《统计学简易速速上手小册》第1章:统计学基础(2024 最新版)

文章目录 1.1 数据类型和数据收集1.1.1 基础知识1.1.2 主要案例:顾客满意度调查1.1.3 拓展案例 1:产品销售分析1.1.4 拓展案例 2:员工绩效评估 1.2 描述性统计学1.2.1 基础知识1.2.2 主要案例:销售数据分析1.2.3 拓展案例 1&#…

【Spring源码分析】Spring的启动流程源码解析

阅读此需阅读下面这些博客先【Spring源码分析】Bean的元数据和一些Spring的工具【Spring源码分析】BeanFactory系列接口解读【Spring源码分析】执行流程之非懒加载单例Bean的实例化逻辑【Spring源码分析】从源码角度去熟悉依赖注入(一)【Spring源码分析】…

【python5】闭包/装饰器,

文章目录 1.闭包和装饰器:函数里return就是闭包2.解析eeprom:如下是二进制文件,C8是一个字节3.json/configparser/optparse:json.dumps(将字典转化为字符串,将json信息写进文件),jso…

PLC在物联网中位置—承上启下,与上位机下位机的关联。

谈到物联网,就绕不开PLC,本文着重介绍PLC的定义、与单片机的区分,价值、物联网中的位置,以及和上位机、下位机的关联,让友友们对PLC有个全面的认知。 一、什么是PLC PLC是可编程逻辑控制器(Programmable L…

Java:字符集、IO流 --黑马笔记

一、字符集 1.1 字符集的来历 我们知道计算机是美国人发明的,由于计算机能够处理的数据只能是0和1组成的二进制数据,为了让计算机能够处理字符,于是美国人就把他们会用到的每一个字符进行了编码(所谓编码,就是为一个…

python-自动化篇-终极工具-用GUI自动控制键盘和鼠标-pyautogui

文章目录 用GUI自动控制键盘和鼠标pyautogui 模块鼠标屏幕位置——移动地图——pyautogui.size鼠标位置——自身定位——pyautogui.position()移动鼠标——pyautogui.moveTo拖动鼠标滚动鼠标 键盘按下键盘释放键盘 开始与结束通过注销关闭所有程序 用GUI自动控制键盘和鼠标 在…

2024 CKS 题库 | 4、RBAC - RoleBinding

CKS 题库 4、RBAC - RoleBinding Context 绑定到 Pod 的 ServiceAccount 的 Role 授予过度宽松的权限。完成以下项目以减少权限集。 Task 一个名为 web-pod 的现有 Pod 已在 namespace db 中运行。 编辑绑定到 Pod 的 ServiceAccount service-account-web 的现有 Role&#…

shell脚本之文件处理命令及字符切片处理

目录 一、文件处理工具 1、tr命令 1.1 转换字符 1.2 压缩字符及删除字符 2、seq命令 3、cut命令 ​4、tac命令 5、rev命令 6、sort命令 ​​​​​7、uniq命令 ​8、echo命令 9、date命令 二、字符串切片处理 1、取字符串的长度 2、跳过字符串最前边的字符 3、…

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标

利用Python和pandas库进行股票技术分析:移动平均线和MACD指标 介绍准备工作数据准备计算移动平均线计算MACD指标结果展示完整代码演示 介绍 在股票市场中,技术分析是一种常用的方法,它通过对股票价格和交易量等历史数据的分析,来…

LeetCode Python - 9.回文数

文章目录 题目答案运行结果 题目 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如&am…

Python基础语法(内置Python, pycharm配置方式)

一.工具安装与配置 1.Python解释器的安装 官网网址:https://www.python.org/ 选择downloads即可(Windows用户点击Windows, 苹果用户点击macOS) 找到最新版本, 并选择 Download Windows installer (64-bit) 下载完成后可在得到一个安装包进行安装(安装时间较长) 安装完成后…

Stable Diffusion 模型下载:DreamShaper(梦想塑造者)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 DreamShaper 是一个分格多样的大模型,可以生成写实、原画、2.5D 等多种图片,能生成很棒的人像和风景图。 条目内容类型大模型基础模型SD 1…