跳到主要内容

UE 回调处理

AndroidiOSWindows

注册 Player Network SDK 的回调,游戏需要对回调函数进行处理;强烈建议游戏在应用启动函数中进行注册。

Update 事件

在 Unreal Engine 4 Tick 事件中添加 OnUpdate 调用以确保 Epic 的异步回调功能正常。更多信息,请参见 UpdateSDK API

代码示例

TScriptInterface<IINTLPluginObserver> Observer;
Observer.SetObject(this);
Observer.SetInterface(Cast<IINTLPluginObserver>(this));
UINTLSDKAPI::AddObserver(Observer);
bool UINTLSDKAPI::OnTickEvent() {
return INTLWrapper::Instance()->OnUpdate();
}

设置 Player Network SDK UE 插件的回调函数

Player Network SDK 支持两种设置回调的方法:

  1. Unreal Engine 事件处理法:注册 IINTLObserver 类。
  2. C++ 事件处理法:使用 UE C++ 多播委托对象。
Unreal Engine 事件处理法c++ 事件处理法
可用于 C++ 和蓝图 (通过 UE 事件系统)只可用于 C++
虚幻头文件分析工具 (UHT) 生成代码虚幻头文件分析工具 (UHT) 不生成代码
注册一个超类单独注册多个不同的功能

Unreal Engine 事件处理法示例

TScriptInterface<IINTLPluginObserver> Observer;
Observer.SetObject(this);
Observer.SetInterface(Cast<IINTLPluginObserver>(this));
UINTLSDKAPI::AddObserver(Observer);
void OnAuthResult_Implementation(FINTLAuthResult ret)
{
// ...
//Handles Login callback
if(ret.MethodId == kMethodIDAuthLogin) {

}
// ...
}

C++ 事件处理法示例

//配置回调
FINTLAuthEvent authEvent;
authEvent.AddUObject(this, &OnAuthResult_Implementation);
UINTLSDKAPI::SetAuthResultObserver(authEvent);
//清除回调
UINTLSDKAPI::GetAuthResultObserver().Clear();

设置回调

函数定义

UFUNCTION(BlueprintCallable, Category = "INTLSDKAPI")
static void AddObserver(TScriptInterface<IINTLPluginObserver> Observer);

入参说明

名称类型说明
ObserverTScriptInterface<IINTLPluginObserver>IINTLPluginObserver 实例的实现

代码示例

TScriptInterface<IINTLPluginObserver> Observer;
Observer.SetObject(this);
Observer.SetInterface(Cast<IINTLPluginObserver>(this));
UINTLSDKAPI::AddObserver(Observer);

移除回调​

函数定义

UFUNCTION(BlueprintCallable, Category = "INTLSDKAPI")
static void RemoveObserver(TScriptInterface<IINTLPluginObserver> Observer);

入参说明

名称类型说明
ObserverTScriptInterface<IINTLPluginObserver>IINTLPluginObserver 实例的实现

代码示例

UINTLSDKAPI::RemoveObserver(this);