第二步:配置-PC端
- 集成SDK后可以直接出 PC 版本的游戏包,包括
Windows
、MacOS
系统; - 目前 PC 版本 SDK 是
基于 H5
做的 UI载体; - 需要
通过回调
方式在 UE4 层显示特定界面;
以下介绍一些需要特殊处理的事项。
# 1 初始化
# 1.1 渠道初始化参数配置
# 1.2 添加初始化回调,展示协议界面
根据国内监管要求,需要玩家阅读并同意用户协议后才能进入游戏。
PC端的协议界面展示流程如下:
在
{场景}.h
文件声明对象属性:在场景蓝图中给属性赋初始值,如图:
在
SetInitCallback
回调中根据需要展示协议界面#if PLATFORM_MAC || PLATFORM_WINDOWS // SDK初始化成功后触发 HeroUsdkSupportPcDelegate::GetInstance()->SetInitCallback([this](bool bShowProtocol){ if (bShowProtocol) { // bShowProtocol为true表示需要显示协议内容 pw = CreateWidget<UPC_ProtocolPannel>(this,prlWid); pw->AddToViewport(); } }); #endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
注意:
SetInitCallback
方法必须在init
方法之前调用,否则会出现回调方法不执行
# 2 登录
# 2.1 添加登录回调,打开登录界面
在
{场景}.h
文件声明对象属性:UPROPERTY(EditAnywhere,BlueprintReadWrite) TSubclassOf<UPC_LoginPannel> loginWid; UPROPERTY(EditAnywhere,BlueprintReadWrite) UPC_LoginPannel* loginW;
1
2
3
4
5在场景蓝图中给属性赋初始值,参考前文1.1:
设置回调并打开登录界面,示例如下:
#if PLATFORM_MAC || PLATFORM_WINDOWS HeroUsdkSupportPcDelegate::GetInstance()->SetLoginCallback([this]() { loginW = CreateWidget<UPC_LoginPannel>(this,loginWid); loginW->AddToViewport(); }); #endif
1
2
3
4
5
6
7
备注:
- 游戏需要管理对象,避免重复显示多个登录界面;
SetLoginCallback
方法必须在login
方法之前调用,否则会出现回调方法不执行
# 3 支付
# 3.1 添加支付回调,展示支付界面
在
{场景}.h
文件声明对象属性UPROPERTY(EditAnywhere,BlueprintReadWrite) TSubclassOf<UPC_PayPannel> payWid; UPROPERTY(EditAnywhere,BlueprintReadWrite) UPC_PayPannel* payW;
1
2
3
4
5在场景蓝图中给属性赋初始值,参考 1.1
在
SetPayCallback
回调中显示支付界面,如下代码:#if PLATFORM_MAC || PLATFORM_WINDOWS //PC内购 HeroUsdkSupportPcDelegate::GetInstance()->SetPayCallback([this](bool bWasSuccessful) { if (bWasSuccessful) { payW = CreateWidget<UPC_PayPannel>(this,payWid); payW->AddToViewport(); } }); #endif
1
2
3
4
5
6
7
8
9
10
11
备注:
- 游戏需要管理对象,避免重复显示多个支付界面;
SetPayCallback
方法必须在pay
方法之前调用,否则会出现回调方法不执行
# 3.2 代币支付
在设置界面开启代币支付,如图。
代币申请请联系运营同学。
# 4 防沉迷
# 4.1 PC端设置防沉迷强制下线回调
场景介绍
根据政策要求,游戏必须接入「防沉迷强制下线」流程 ;- 触发防沉迷后,会通过该接口将通知玩家下线;
- CP需实现此接口,并自定义界面显示文本;
- PC防沉迷已与移动端保持一致,
调用方法
virtual void usdk_onLoginInvalid(const FString& msg) = 0;
1
调用示例
HeroUsdkSupportKit::GetInstance().NotifyObject->usdk_onLoginInvalid(AntiMsg);
1
本文档对解决你的问题有所帮助?
文档反馈