首页 > 编程语言 >UEC++ 会话暴露给蓝图 ,无法识别会话相关类型

UEC++ 会话暴露给蓝图 ,无法识别会话相关类型

时间:2022-12-06 15:15:55浏览次数:63  
标签:ResultSession FSearchResultSession UFUNCTION C++ 会话 OnlineResult UE USTRUCT

在实在联网功能时,我们常常需要获取到会话类型,当我们需要在蓝图中使用这些类型的时候。如果我们直接在头文件中直接使用会话相关类型在编译时就会报错

Unrecognized type “你所引用的类” - type must be a UCLASS,USTRUCT or UENUM

这时候就需要利用结构体对需要使用的会话类型进行一个包装,具体的实现方式我们可以借鉴(对,是借鉴不是抄) BlueprintSession 的实现形式。找到相关头文件 

\引擎安装路径\Engine\Plugins\Online\OnlineSubsystemUtils\Source\OnlineSubsystemUtils\Classes\FindSessionsCallbackProxy.h
\引擎安装路径\Engine\Plugins\Online\OnlineSubsystemUtils\Source\OnlineSubsystemUtils\Private\FindSessionsCallbackProxy.cpp

 这里只他们的展示部分代码,具体可以自己去找这两个文件看

FindSessionsCallbackProxy.h 相关类型的封装
USTRUCT(BlueprintType)
struct FBlueprintSessionResult
{
    GENERATED_USTRUCT_BODY()

    FOnlineSessionSearchResult OnlineResult;
};

综上,我们就可以得出我们需要的代码

USTRUCT(BlueprintType)
struct FSearchResultSession {
    GENERATED_USTRUCT_BODY()
    FOnlineSessionSearchResult OnlineResult; // 注意此处不要添加UPROPERTY 不然又得找不到了
};
// 以下为类型实现,注意在结构体内是无法使用 UFUNCTION 的 UFUNCTION(BlueprintPure) static int32 GetPingInMs(const FSearchResultSession& ResultSession) { return ResultSession.OnlineResult.PingInMs; } UFUNCTION(BlueprintPure) static FString GetServerName(const FSearchResultSession& ResultSession) { return ResultSession.OnlineResult.Session.OwningUserName; } UFUNCTION(BlueprintPure) static int32 GetCurrentPlayer(const FSearchResultSession& ResultSession) { return ResultSession.OnlineResult.Session.SessionSettings.NumPublicConnections - ResultSession.OnlineResult.Session.NumOpenPublicConnections; } UFUNCTION(BlueprintPure) static int32 GetMaxPlayer(const FSearchResultSession& ResultSession) { return ResultSession.OnlineResult.Session.SessionSettings.NumPublicConnections; }

需要其他什么功能可以另行添加,注意函数的形参类型是自己定义的结构体名称

试一试~ emmmmm 非常~好用!

 

标签:ResultSession,FSearchResultSession,UFUNCTION,C++,会话,OnlineResult,UE,USTRUCT
From: https://www.cnblogs.com/limu-zy/p/16955249.html

相关文章

  • 在服务器端创建文件(create a sequential file)
     tables: KNA1.*TYPE-POOLS: Z100T.TYPES: BEGIN OF Z100T_REC,       cus_num like KNA1-KUNNR,       name like KNA1-NAME1,       s_te......
  • Error: Data...account due to customer is referenced to another account
    用FD32要删除客户信用主数据老是报这个错,解决办法:先找出所有reference的客户,然后用FD32去一一进行删除,注意:在FD32的初始屏幕要勾选status,然后进入到STATUS屏幕后选择edit-->......
  • PostgreSQL会话及阻塞相关常用SQL
    ====PostgreSQL===========select*frompg_settings;selectversion(),txid_current(),pg_backend_pid(),current_user,current_schema,current_timestamp;--......
  • C/C++饮品自动贩卖机系统
    C/C++饮品自动贩卖机系统该饮品自动贩卖机总容量确定,且贩卖机内通道宽度并排只能容纳一个饮品,购买饮品出口和添加饮品口在同一个位置。经营者添加饮品时,每次只能添加一个......
  • C++校园导游程序及通信线路设计
    C++校园导游程序及通信线路设计一、设计内容:设计校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相......
  • C/C++ 新生入学管理系统
    C/C++新生入学管理系统4、新生入学管理系统问题描述:通过此系统可以实现如下功能:(1)用户登录,用户分为管理员和新生两种不同角色功能不同。(2)管理员模块功能:管理员......
  • C++工资管理系统
    C++工资管理系统课程设计六工资管理系统[要求]该系统在磁盘上存储了某单位上月全体职工的工资信息。对于每一位职工存储以下信息:月份、职工编号、基本工资、津贴、岗......
  • vue实现展示连续多空格
    vue中内容中间空格无论输入多少只会展示一个,可使用v-html来实现多空格展示&nbsp;英文空格&emsp;中文空格<divv-html="'价&emsp;&emsp;格'"></div>或者使用white-......
  • C++特色家政服务管理系统
    C++特色家政服务管理系统6.30特色家政服务管理系统[问题详述]家政公司针对新建住宅区推出“安心入住”清扫特色家政服务,为房主清扫新装修的住房,让房主能安心地搬人一......
  • C/C++图书管理系统
    C/C++图书管理系统图书管理系统问题描述:设计并实现一个图书管理系统。能模拟图书管理系统的部分功能,包括读者注册,读者借阅,图书管理,用户管理等。功能说明:(1)模拟图书管......