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

西安西工大软件园做网站的公司欧美在线网站设计教程

西安西工大软件园做网站的公司,欧美在线网站设计教程,.net 网站开发视频,jsp做手机网站本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P10 创建会话#xff08;Creating A Session#xff09;》 的学习笔记#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版#xff0c;UP主#xff08;也是译者多人TPS完整教程》 —— 《P10 创建会话Creating A Session》 的学习笔记该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版UP主也是译者为 游戏引擎能吃么。 文章目录 P10 创建会话10.1 委托10.2 创建委托以及回调函数10.3 Summary P10 创建会话 本节课将学习委托Delegates的基本概念、工作原理以及它对于管理多人游戏的关键Crucial作用然后我们将在上节课《P9 访问 SteamAcessing Steam》 代码的基础上尝试创建一个游戏会话并通过在屏幕上打印文本来验证游戏会话是否创建成功。 10.1 委托 委托可以被认为是一个持有对函数的引用Reference的对象。虚幻引擎的委托可以与函数 绑定Having functions bound to them可以 广播到 所有与它绑定的函数接收并执行以进行 响应 的信号。我们通常会编写 回调函数Make functions referred to as callback functions然后将它们绑定到委托上。于是当游戏中的某个确定事件Certain event发生时委托被触发或者广播任何绑定在该委托的 回调函数 都将进行响应。 虚幻引擎的在线会话需要利用委托这是因为创建和加入游戏会话都需要在互联网上发送信息。如果我们调用 会话接口Session interface函数 “CreateSession()” 就会发送信息到服务平台本课程为 Steam此时游戏会话就能被创建然后服务平台将反馈信息发送到我们的设备上让我们知道会话创建已经完成。 会话接口Session interface定义了一组委托类型拥有一个可以在适当的时间内通过事件触发进行遍历的 委托列表Delegate list我们将以其中一个委托类型创建一个新对象为它绑定一个回调函数并添加到会话接口的委托列表中。 本节课的思路就是首先利用函数 “FOnCreateSessionCompleteDelegate” 在第三人称游戏项目 MenuSystem 的 character 类中创建委托变量同时也创建一个绑定到该委托的回调函数 “OnCreateSessionComplete()”接着访问会话接口并添加委托到委托列表中然后调用会话接口函数 “CreateSession()” 连接到 Steam 以创建游戏会话游戏会话创建完成后 Steam 向会话接口发送一个信号会话接口将遍历委托列表从而触发我们添加到此列表的委托并导致回调函数 “OnCreateSessionComplete()” 被调用并接收游戏会话创建完成的信息通过打印信息到屏幕上就可以验证会话是否真的创建成功。 关于委托的更多知识可以参阅官方文档《委托》。 10.2 创建委托以及回调函数 添加代码到 “MenuSystemcharacter.h” 的类 “AMenuSystemCharacter” 中定义委托 CreateSessionCompleteDelegate、创建游戏会话函数 CreateGameSession() 以及委托的回调函数 OnCreateSessionComplete() ...#include Interfaces/OnlineSessionInterface.h...UCLASS(configGame) class AMenuSystemCharacter : public ACharacter {.../* P10 创建会话Creating A Session*/ public:// 会话接口智能指针// IOnlineSessionPtr OnlineSessionInterface; // 添加头文件 Interfaces/OnlineSessionInterface.h 后使用更具可读性TSharedPtrclass IOnlineSession, ESPMode::ThreadSafe OnlineSessionInterface; // 使用 TSharedPtr 智能指针包装器进行声明protected:UFUNCTION(BlueprintCallable)void CreateGameSession(); // 创建游戏会话void OnCreateSessionComplete(FName SessionName, bool bWasSuccessful); // 委托 CreateSessionCompleteDelegate 的回调函数private:// 类 FOnCreateSessionCompleteDelegate 在 UE 5.0 和 5.1 版本的头文件 Interfaces/OnlineSessionInterface.h 中声明// 而 5.2 和 5.3 版本的头文件 Interfaces/OnlineSessionDelegates.h 中声明FOnCreateSessionCompleteDelegate CreateSessionCompleteDelegate; // 会话创建完成委托/* P10 创建会话Creating A Session*/ };在 “MenuSystemcharacter.cpp” 构造函数 “AMenuSystemCharacter::AMenuSystemCharacter()” 中为委托 “CreateSessionCompleteDelegate” 绑定回调函数 “OnCreateSessionComplete()” 并完成创建游戏会话函数 CreateGameSession() 的定义。 /* MenuSystemcharacter.h */ ... /* P10 创建会话Creating A Session*/ #include OnlineSessionSettings.h /* P10 创建会话Creating A Session*/ .../* MenuSystemcharacter.cpp */ .../* P10 创建会话Creating A Session*/ AMenuSystemCharacter::AMenuSystemCharacter(): // 为委托绑定回调函数 CreateSessionCompleteDelegate(FOnCreateSessionCompleteDelegate::CreateUObject(this, ThisClass::OnCreateSessionComplete)) /* P10 创建会话Creating A Session*/ {...}/* P10 创建会话Creating A Session*/ void AMenuSystemCharacter::CreateGameSession() // 当按下数字键 1 时调用 {// 检查会话接口是否有效if (!OnlineSessionInterface.IsValid()) {return;}// 检查是否先前存在会话auto ExistingSession OnlineSessionInterface-GetNamedSession(NAME_GameSession);if (ExistingSession ! nullptr) { // 如果先前存在会话OnlineSessionInterface-DestroySession(NAME_GameSession); // 销毁会话}OnlineSessionInterface-AddOnCreateSessionCompleteDelegate_Handle(CreateSessionCompleteDelegate); // 添加委托到会话接口的委托列表TSharedPtrFOnlineSessionSettings SessionSettings MakeShareable(new FOnlineSessionSettings()); // 创建会话设置利用函数 MakeShareable 初始化// FOnlineSessionSettings 在头文件 OnlineSessionSettings.h 中// 会话设置成员变量参阅及含义https://docs.unrealengine.com/5.3/en-US/API/Plugins/OnlineSubsystem/FOnlineSessionSettings/SessionSettings-bIsLANMatch false; // 会话设置不创建 LAN 连接SessionSettings-NumPublicConnections 4; // 会话设置设置最大公共连接数为 4SessionSettings-bAllowJoinInProgress true; // 会话设置在会话运行时允许其他玩家加入SessionSettings-bAllowJoinViaPresence true; // 会话设置Steam 使用 Presence 搜索会话所在地区确保连接正常工作SessionSettings-bShouldAdvertise true; // 会话设置允许 Steam 发布会话SessionSettings-bUsesPresence true; // 会话设置允许显示用户 Presence 信息SessionSettings-bUseLobbiesIfAvailable true; // 视频中未提及会话设置优先选择 Lobby APISteam 支持 Lobby APIconst ULocalPlayer* LocalPlayer GetWorld()-GetFirstLocalPlayerFromController(); // 获取本地玩家指针OnlineSessionInterface-CreateSession(*LocalPlayer-GetPreferredUniqueNetId(), // 第一个参数类型为 strut FUniqueNetIdRepl公共继承了 struct FUniqueNetIdWrapper// 这个包装器重载了引用运算符 *它表示 * 返回一个引用 *UniquenetIdNAME_GameSession, // 第二个参数类型为 FName SessionName游戏会话名称*SessionSettings); // 第三个参数类型为 const FOnlineSessionSettings NewSessionSettings } /* P10 创建会话Creating A Session*/...会话设置代码 SessionSettings-bUseLobbiesIfAvailable true 在视频中是没有提及的如果在后面的测试出现无法创建会话则需要添加作者在下一集教学视频 《P11 设置加入会话Setup for Joining Sessions》 中会提到这点。 继续在 “MenuSystemcharacter.cpp” 构造函数 “AMenuSystemCharacter::AMenuSystemCharacter()” 中完成回调函数 OnCreateSessionComplete() 的定义。 .../* P10 创建会话Creating A Session*/ void AMenuSystemCharacter::OnCreateSessionComplete(FName SessionName, bool bWasSuccessful) {if (bWasSuccessful) { // 如果游戏会话创建成功if (GEngine) {GEngine-AddOnScreenDebugMessage( // 添加调试信息到屏幕上-1, // 使用 -1 不会覆盖前面的调试信息15.f, // 调试信息的显示时间FColor::Red, // 字体颜色FString::Printf(TEXT(Create session: %s!), *SessionName.ToString()) // 打印游戏会话的名称);}}else { // 如果游戏会话创建失败if (GEngine) { GEngine-AddOnScreenDebugMessage( // 添加调试信息到屏幕上-1, // 使用 -1 不会覆盖前面的调试信息15.f, // 调试信息的显示时间FColor::Red, // 字体颜色FString::Printf(TEXT(Failed to create session!)) // 打印失败消息);}} } /* P10 创建会话Creating A Session*/...进行实时编译编译成功后打开 “BP_ThirdPersonCharacter” 蓝图编辑器绘制如下蓝图编译、保存。 将项目打包之后再运行游戏保证 Steam 已经运行按下数字键 “1”屏幕左上角红色字体显示会话的名称 “Game Session” 说明创建会话成功。 10.3 Summary 本节课学习委托Delegates的基本概念、工作原理以及它对于管理多人游戏的关键crucial作用在创建会话的 C 编程中首先利用函数 “FOnCreateSessionCompleteDelegate” 创建委托接着创建一个绑定到该委托的回调函数 “OnCreateSessionComplete()”访问会话接口并添加该委托到委托列表中然后调用会话接口函数 “CreateSession()” 连接到 Steam 以创建游戏会话游戏会话创建完成后 Steam 向会话接口发送一个信号会话接口遍历委托列表触发我们添加到此列表的委托并导致回调函数 “OnCreateSessionComplete()” 被调用接收游戏会话创建完成的信息我们将其打印在屏幕上。 在 10.1 委托 中有关委托的进一步学习可以参阅官方文档《委托》。 在 10.2 创建委托以及回调函数 的 步骤 2 中会话设置代码 SessionSettings-bUseLobbiesIfAvailable true 在视频中是没有提及的如果在后面的测试出现无法创建会话则需要添加。
http://www.zqtcl.cn/news/63981/

相关文章:

  • 一键建站系统有哪些wordpress 概要
  • 建立网站有哪些步骤?个体户做网站去哪里做
  • 家居用品东莞网站建设公司宣传彩页设计模板
  • 东莞企业网站制作推广运营百度问一问免费咨询
  • 南昌seo网站推广费用建设厅安全员c证
  • 旅游网站建设与设计wordpress 上传图片插件
  • 大型网站开发框架有哪些深圳工厂网站建设公司
  • 江门市住房建设管理局网站Light模板WordPress
  • 专业网站设计制作服务公司做网站需要什么资质
  • 海南省城乡建设厅网站首页无锡网络公司设计
  • 门户网站改版建议自己做的网站怎么弄成app
  • 上海设计网站开发西安网站制作工商
  • 烟台网站建设力荐企汇互联见效付款邳州微网站开发
  • 网站给篡改了要怎么做包装盒设计
  • 邯郸个人网站建设微信被不明android账号登录
  • 工业企业网站建设也的意义何鹏seo
  • 怎么做电子商务的网站杨凌做网站网址
  • 公司网站建设找谁制作文字图片软件
  • 企业建设门户网站的需求wordpress插件太多
  • 手机网站 滑动翻页建筑公司网址大全
  • 腾讯网站开发河南监理建设协会网站
  • 十大购物网站排行榜一站式网站建设平台
  • 网站建设有什么好处wordpress模板资源
  • asp网站图片不显示企业工资管理系统软件
  • 网站手机版wordpress伪静态 文件夹
  • 企业建设网站的母的旅游网站设计模版
  • 网站建设软件手机商城网站建设策划方案范文
  • 网站开发的后台技术结构优化
  • 如何用phpstorm做网站重庆系统建站怎么用
  • 网站开发的3个阶段宁波seo排名优化培训