KBEngine官方论坛

 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 配置 开服
查看: 71|回复: 14

前后端交互参数类型

[复制链接]

20

主题

148

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
发表于 2018-12-6 11:33:35 | 显示全部楼层 |阅读模式
如果暴露给客户端的事件中参数有FIXED_DICT/list 类型的,插件层再暴露给ue4的接口中是不是要把这种类型的参数自己封装成结构体?
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-6 13:43:31 | 显示全部楼层
sdk会自动生成对应的结构体
QQ:3603661
3603661@qq.com
回复

使用道具 举报

20

主题

148

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
 楼主| 发表于 2018-12-6 14:54:51 | 显示全部楼层
生成的都是在KBETypes.h的class吧。demo在Script LoginEvents.h中自定义的一个FAVATAR_INFOS struct.
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-6 15:00:02 | 显示全部楼层
KBETypes
QQ:3603661
3603661@qq.com
回复

使用道具 举报

20

主题

148

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
 楼主| 发表于 2018-12-6 15:12:44 | 显示全部楼层
  1. class KBENGINEPLUGINS_API PLAYER_INFO
  2. {
  3. public:
  4.         FString wechatID;
  5.         FString phoneNo;
  6.         FString wechatNickname;
  7.         FString area;
  8.         uint8 sex;
  9.         FString headImg;
  10.         FString level;
  11.         FString appellation;

  12.         PLAYER_INFO():
  13.         wechatID(),
  14.         phoneNo(),
  15.         wechatNickname(),
  16.         area(),
  17.         sex(0),
  18.         headImg(),
  19.         level(),
  20.         appellation()
  21.         {
  22.         }

  23. };
复制代码
  1. UFUNCTION(BlueprintCallable, Category = KBEngine)
  2.         void reqSetPInfo(const PLAYER_INFO& playerInfo);
复制代码
KBETypes生成上面的class,并没有生成对应的struct。下面那个是我要暴露给客户端的,但不能想我这样直接把PLAYER_INFO当参数类型吧。这样应该这么做
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-6 16:58:43 | 显示全部楼层
做不到, 你要往蓝图上放, 你自己再封装个结构。
这个只能提供到代码层面, 蓝图很多类型不支持,比如uint64,uint8
QQ:3603661
3603661@qq.com
回复

使用道具 举报

20

主题

148

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
 楼主| 发表于 2018-12-6 17:07:15 | 显示全部楼层
嗯好的。那就是参照demo中的AVATAR_INFOS 这种做法了。
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-6 17:43:19 | 显示全部楼层
QQ:3603661
3603661@qq.com
回复

使用道具 举报

20

主题

148

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
 楼主| 发表于 2018-12-7 18:44:24 | 显示全部楼层
突然想到,AVATAR_INFOS_LIST里的个数比较有限,如果是游戏记录之类的list的比较多的也用这种方式传然后插件层转换成结构体数组给蓝图会不会有什么问题。
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-8 09:54:23 | 显示全部楼层
AVATAR_INFOS_LIST为何有限?
QQ:3603661
3603661@qq.com
回复

使用道具 举报

20

主题

148

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
 楼主| 发表于 2018-12-8 10:25:32 | 显示全部楼层
理论上是不限,只是个人感觉不会无限制的创建。。。
我不太确定的是成千上万个记录的时候交互的时候以这种数据类型是不是合适
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-8 12:04:31 | 显示全部楼层
数据量大了效率会很低。
QQ:3603661
3603661@qq.com
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-8 12:04:42 | 显示全部楼层
你自己看情况优化
QQ:3603661
3603661@qq.com
回复

使用道具 举报

20

主题

148

帖子

424

积分

中级会员

Rank: 3Rank: 3

积分
424
 楼主| 发表于 2018-12-10 16:30:48 | 显示全部楼层
<**_LIST> FIXED_DICT

接口参数类型为**_LIST是,服务端收到时正常应该要什么处理?

声明定义list = **_list_inst.getDictFromObj(),获得{‘values’:[[], [], ...]}这个这种类型的字字典,然后再遍历list['values']的值列表,每个项再**_getDictFromObj()转成dict,然后通过item['keyName']来取值?
回复

使用道具 举报

5

主题

3591

帖子

214748万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2147483647

引擎扛把子

发表于 2018-12-10 17:43:32 | 显示全部楼层
差不多。  
QQ:3603661
3603661@qq.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|KBEngine Forum

GMT+8, 2018-12-19 05:37 , Processed in 0.030156 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表