Unreal Upgrade Guide
See what changed between your current SDK version and the latest, with the exact steps to migrate.
查看你目前的 SDK 版本與最新版本之間的變更,以及確切的遷移步驟。
查看你当前的 SDK 版本与最新版本之间的变更,以及确切的迁移步骤。
Migration
Remove the old VNGGames SDK plugin folder
移除舊的 VNGGames SDK 外掛資料夾
移除旧的 VNGGames SDK 插件文件夹
- Close the Unreal editor so the plugin’s compiled binaries are not locked.
- Delete the old
VNGGamesSDKfolder from your project’sPluginsdirectory. - Delete the stale
BinariesandIntermediatefolders the previous build left behind, both the plugin’s and your project’s, so the engine recompiles instead of loading the old module.
- 關閉 Unreal 編輯器,避免外掛已編譯的二進位檔被鎖定。
- 從專案的
Plugins目錄刪除舊的VNGGamesSDK資料夾。 - 刪除上一次建置留下的
Binaries與Intermediate資料夾,包含外掛與專案兩邊,讓引擎重新編譯而不是載入舊模組。
- 关闭 Unreal 编辑器,避免插件已编译的二进制文件被锁定。
- 从项目的
Plugins目录删除旧的VNGGamesSDK文件夹。 - 删除上一次构建留下的
Binaries与Intermediate文件夹,包含插件与项目两边,让引擎重新编译而不是加载旧模块。
New custom-event nodes are the plugin’s first analytics surface
1.1.0 adds the plugin’s first analytics calls. VGSDK Send Custom Event (UVGSDKBlueprint) names which analytics providers receive the event, while VGSDK Misc Custom Event (UVGSDKBlueprint) sends to the SDK’s default provider set and lets the SDK prefix the name per provider.
1.1.0 為外掛新增首批分析呼叫。VGSDK Send Custom Event (UVGSDKBlueprint) 可指定哪些分析供應商收到該事件,而 VGSDK Misc Custom Event (UVGSDKBlueprint) 則送往 SDK 的預設供應商集合,並由 SDK 依供應商為事件名稱加上前綴。
1.1.0 为插件新增首批分析调用。VGSDK Send Custom Event (UVGSDKBlueprint) 可指定哪些分析提供商收到该事件,而 VGSDK Misc Custom Event (UVGSDKBlueprint) 则发往 SDK 的默认提供商集合,并由 SDK 依提供商为事件名称加上前缀。
| UVGSDKBlueprint::SendCustomEvent | |
| UVGSDKBlueprint::MiscCustomEvent | |
| FVGSDKAnalyticsPlatform | |
| EVGSDKAnalyticsProvider |
- Send each game event you already track through the VGSDK Send Custom Event node, passing an event name and a string parameter map.
- Fill the Platforms array with one FVGSDKAnalyticsPlatform per provider that should receive the event, choosing the Provider from EVGSDKAnalyticsProvider and setting Prefix.
- Use the VGSDK Misc Custom Event node instead when you want the SDK’s default provider set and its per-provider name prefix.
- Name your own events, because the plugin ships no typed event taxonomy and no per-funnel-stage named events.
- 透過 VGSDK Send Custom Event 節點送出你已在追蹤的每個遊戲事件,並傳入事件名稱與字串參數對應表。
- 在 Platforms 陣列中,為每個應收到該事件的供應商各填入一個 FVGSDKAnalyticsPlatform,由 EVGSDKAnalyticsProvider 選擇 Provider 並設定 Prefix。
- 若你希望使用 SDK 的預設供應商集合與其依供應商加上的名稱前綴,請改用 VGSDK Misc Custom Event 節點。
- 請自行命名事件,因為外掛並未提供型別化的事件分類,也沒有依漏斗階段命名的事件。
- 通过 VGSDK Send Custom Event 节点发出你已在跟踪的每个游戏事件,并传入事件名称与字符串参数映射表。
- 在 Platforms 数组中,为每个应收到该事件的提供商各填入一个 FVGSDKAnalyticsPlatform,由 EVGSDKAnalyticsProvider 选择 Provider 并设置 Prefix。
- 若你希望使用 SDK 的默认提供商集合与其依提供商加上的名称前缀,请改用 VGSDK Misc Custom Event 节点。
- 请自行命名事件,因为插件并未提供类型化的事件分类,也没有依漏斗阶段命名的事件。
See the usage and full signature in the Integration guide:
Custom event請在整合指南中查看用法與完整簽名:
自訂事件请在集成指南中查看用法与完整签名:
自定义事件This addition is opt-in. Nothing breaks if you skip it: your existing integration keeps working, you just don’t gain this capability.
此新增功能為選用。略過不會造成任何問題:你現有的整合仍可正常運作,只是不會獲得此功能。
此新增功能为可选。跳过不会造成任何问题:你现有的集成仍可正常运行,只是不会获得此功能。
VGSDKModel.h replaced by one header per model type
1.1.0 deletes Public/VGSDKModel.h, which had declared FVGSDKUserInfo, FVGSDKError and FVGSDKLoginChannel together, and gives each type its own header under Public/Models/. The structs themselves are unchanged, so only the include path moves.
1.1.0 刪除原本一併宣告 FVGSDKUserInfo、FVGSDKError 與 FVGSDKLoginChannel 的 Public/VGSDKModel.h,改為在 Public/Models/ 下讓每個型別各自擁有標頭檔。結構本身並未改變,變的只有 include 路徑。
1.1.0 删除原本一并声明 FVGSDKUserInfo、FVGSDKError 与 FVGSDKLoginChannel 的 Public/VGSDKModel.h,改为在 Public/Models/ 下让每个类型各自拥有头文件。结构本身并未改变,变的只有 include 路径。
| VGSDKModel.h | Models/ |
Switch each call to the replacement shown in the table above.
將每個呼叫改為上表所示的替代項目。
将每个调用改为上表所示的替代项。
Plugin-internal code and a monolithic build that still include VGSDKModel.h stop compiling, because that header no longer exists in the plugin. A game driven only from Blueprint is unaffected.
仍引入 VGSDKModel.h 的外掛內部程式碼與單體式建置將無法編譯,因為該標頭檔已不存在於外掛中。純粹以 Blueprint 呼叫 SDK 的遊戲則不受影響。
仍引入 VGSDKModel.h 的插件内部代码与单体式构建将无法编译,因为该头文件已不存在于插件中。纯粹以 Blueprint 调用 SDK 的游戏则不受影响。
The Android native SDK now resolves from Maven, not from files in the plugin
At 1.0.0 the plugin carried the native Android SDK as two local archives and copied them into the Gradle build, applying the Gradle plugin PassPlugin. 1.1.0 removes both files, and the Gradle injection now resolves vnggames:vgsdk-service from the VNGGames Maven repository and applies the Gradle plugin vnggames.vgsdk-service.
在 1.0.0,外掛以兩個本機封存檔的形式攜帶 Android 原生 SDK,將其複製到 Gradle 建置中,並套用 Gradle plugin PassPlugin。1.1.0 移除這兩個檔案,Gradle 注入改為從 VNGGames Maven 儲存庫解析 vnggames:vgsdk-service,並套用 Gradle plugin vnggames.vgsdk-service。
在 1.0.0,插件以两个本地归档文件的形式携带 Android 原生 SDK,将其复制到 Gradle 构建中,并应用 Gradle plugin PassPlugin。1.1.0 移除这两个文件,Gradle 注入改为从 VNGGames Maven 仓库解析 vnggames:vgsdk-service,并应用 Gradle plugin vnggames.vgsdk-service。
| Source/ThirdParty/Android/passsdk.aar | |
| Source/ThirdParty/Android/PassPlugin.jar |
- Allow the Android build machine and your CI runners outbound access to the VNGGames Maven repository.
- Delete
Source/ThirdParty/Android/passsdk.aarandSource/ThirdParty/Android/PassPlugin.jarfrom any hand-merged plugin folder that still carries them. - Run a clean Android packaging build and confirm the native dependency resolves from that repository.
- 請開放 Android 建置機器與 CI 執行器對 VNGGames Maven 儲存庫的對外連線。
- 請從仍留有這些檔案的手動合併外掛資料夾中,刪除
Source/ThirdParty/Android/passsdk.aar與Source/ThirdParty/Android/PassPlugin.jar。 - 執行一次乾淨的 Android 封裝建置,確認原生相依套件確實由該儲存庫解析。
- 请开放 Android 构建机器与 CI 执行器对 VNGGames Maven 仓库的对外连接。
- 请从仍留有这些文件的手动合并插件文件夹中,删除
Source/ThirdParty/Android/passsdk.aar与Source/ThirdParty/Android/PassPlugin.jar。 - 执行一次干净的 Android 打包构建,确认原生依赖包确实由该仓库解析。
The Android Gradle build fails to resolve the SDK dependency whenever the build machine cannot reach that repository. A stale local archive left beside the Maven dependency risks a duplicate-class failure.
只要建置機器無法連線至該儲存庫,Android Gradle 建置就會無法解析 SDK 相依套件。若在 Maven 相依套件旁留下過期的本機封存檔,還可能造成類別重複的失敗。
只要构建机器无法连接该仓库,Android Gradle 构建就会无法解析 SDK 依赖包。若在 Maven 依赖包旁留下过期的本地归档文件,还可能造成类重复的失败。
New VGSDK Show Customer Support node opens the CS portal
1.2.0 adds the Customer Support portal as a first-class SDK screen. The game fills an FCustomerSupportInfo with the player and role details it already holds, and the SDK opens the portal with that context attached.
1.2.0 將客服入口納入 SDK 的正式畫面。遊戲以既有的玩家與角色資料填入 FCustomerSupportInfo,SDK 便會以該情境開啟入口。
1.2.0 将客服入口纳入 SDK 的正式画面。游戏以既有的玩家与角色资料填入 FCustomerSupportInfo,SDK 便会以该上下文打开入口。
↪ This form is replaced in 1.3.0, see: C++ facade renamed from VGSDK to VGSDKWrapper
↪ 此寫法於 1.3.0 已被取代,請參見: C++ 門面類別由 VGSDK 更名為 VGSDKWrapper
↪ 此写法于 1.3.0 已被取代,请参见: C++ 门面类由 VGSDK 更名为 VGSDKWrapper
| UVGSDKCustomerSupport | |
| FCustomerSupportInfo | |
| VGSDK::ShowCustomerSupport |
- Fill an FCustomerSupportInfo with the player’s UserId, LoginType, ServerId, RoleName, Level, Guild, and Content.
- Call the VGSDK Show Customer Support node with that struct to open the support portal.
- Handle the On Completed pins and read the FString Code from Error when bSuccess is false.
- Verify on a packaged Android or iOS build, because every other build target falls back to the plugin’s log-only helper and the node never completes.
- 以玩家的 UserId、LoginType、ServerId、RoleName、Level、Guild 與 Content 填入 FCustomerSupportInfo。
- 將該結構傳入 VGSDK Show Customer Support 節點,即可開啟客服入口。
- 處理 On Completed 的輸出接腳,並在 bSuccess 為 false 時從 Error 讀取 FString 型別的 Code。
- 請在打包後的 Android 或 iOS 建置上驗證,因為其他建置目標都會退回外掛僅輸出記錄的輔助程式,節點永遠不會完成。
- 以玩家的 UserId、LoginType、ServerId、RoleName、Level、Guild 与 Content 填入 FCustomerSupportInfo。
- 将该结构传入 VGSDK Show Customer Support 节点,即可打开客服入口。
- 处理 On Completed 的输出引脚,并在 bSuccess 为 false 时从 Error 读取 FString 类型的 Code。
- 请在打包后的 Android 或 iOS 构建上验证,因为其他构建目标都会回退到插件仅输出日志的辅助程序,节点永远不会完成。
See the usage and full signature in the Integration guide:
Open support centerFCustomerSupportInfo請在整合指南中查看用法與完整簽名:
開啟支援中心FCustomerSupportInfo请在集成指南中查看用法与完整签名:
打开客户支持中心FCustomerSupportInfoThis addition is opt-in. Nothing breaks if you skip it: your existing integration keeps working, you just don’t gain this capability.
此新增功能為選用。略過不會造成任何問題:你現有的整合仍可正常運作,只是不會獲得此功能。
此新增功能为可选。跳过不会造成任何问题:你现有的集成仍可正常运行,只是不会获得此功能。
C++ facade renamed from VGSDK to VGSDKWrapper
1.3.0 deletes Public/VGSDK.h and Private/VGSDK.cpp and replaces the singleton with class VGSDKWrapper in Public/VGSDKWrapper.h. Every method carried over unchanged, so this renames the class and its header rather than changing any call.
1.3.0 刪除 Public/VGSDK.h 與 Private/VGSDK.cpp,並以 Public/VGSDKWrapper.h 中的 class VGSDKWrapper 取代原本的單例。所有方法皆原樣保留,因此這只是類別與標頭檔的更名,並非任何呼叫本身的變更。
1.3.0 删除 Public/VGSDK.h 与 Private/VGSDK.cpp,并以 Public/VGSDKWrapper.h 中的 class VGSDKWrapper 取代原本的单例。所有方法均原样保留,因此这只是类与头文件的更名,并非任何调用本身的变更。
| VGSDK.h | VGSDKWrapper.h |
| VGSDK::GetInstance | VGSDKWrapper::GetInstance |
Switch each call to the replacement shown in the table above.
將每個呼叫改為上表所示的替代項目。
将每个调用改为上表所示的替代项。
Plugin-internal code and a monolithic build that still include VGSDK.h stop compiling, because that header no longer exists in the plugin. A game driven only from Blueprint is unaffected.
仍引入 VGSDK.h 的外掛內部程式碼與單體式建置將無法編譯,因為該標頭檔已不存在於外掛中。純粹以 Blueprint 呼叫 SDK 的遊戲則不受影響。
仍引入 VGSDK.h 的插件内部代码与单体式构建将无法编译,因为该头文件已不存在于插件中。纯粹以 Blueprint 调用 SDK 的游戏则不受影响。
Android build now uses Android Gradle Plugin 8.6.0 and compile SDK 35, with minify disabled
The plugin injects Gradle properties into the Android project your game builds, and 1.3.0 adds three that were absent at 1.2.0, naming Android Gradle Plugin 8.6.0, compile SDK 35, and DISABLE_MINIFY=1. They reach your build without you editing a file, and no public API changed in this release.
外掛會將 Gradle 屬性注入你遊戲所建置的 Android 專案,1.3.0 新增了 1.2.0 尚未存在的三項,分別指定 Android Gradle Plugin 8.6.0、compile SDK 35 與 DISABLE_MINIFY=1。這些屬性不需你編輯任何檔案就會進入你的建置,而本次發佈並未變更任何公開 API。
插件会将 Gradle 属性注入你游戏所构建的 Android 工程,1.3.0 新增了 1.2.0 尚未存在的三项,分别指定 Android Gradle Plugin 8.6.0、compile SDK 35 与 DISABLE_MINIFY=1。这些属性不需你编辑任何文件就会进入你的构建,而本次发布并未变更任何公开 API。
- Install Android SDK Platform 35 in the Android SDK that your engine’s Android toolchain points at.
- Confirm the Gradle and JDK versions on your build machine satisfy Android Gradle Plugin 8.6.0.
- Re-test your packaged release build, because code shrinking is now switched off for the whole application.
- 在引擎 Android 工具鏈所指向的 Android SDK 中安裝 Android SDK Platform 35。
- 確認建置機器上的 Gradle 與 JDK 版本符合 Android Gradle Plugin 8.6.0 的要求。
- 重新測試打包後的 release 建置,因為程式碼裁剪現在對整個應用程式都已關閉。
- 在引擎 Android 工具链所指向的 Android SDK 中安装 Android SDK Platform 35。
- 确认构建机器上的 Gradle 与 JDK 版本符合 Android Gradle Plugin 8.6.0 的要求。
- 重新测试打包后的 release 构建,因为代码裁剪现在对整个应用都已关闭。
A build machine without Android SDK Platform 35 stops in Gradle when it cannot find that compile SDK. Once it does build, the release APK ships unshrunk and unobfuscated, so it is larger than before.
未安裝 Android SDK Platform 35 的建置機器會在 Gradle 找不到該 compile SDK 時中斷。而在建置成功之後,release APK 會以未裁剪、未混淆的形式發佈,因此體積比以往更大。
未安装 Android SDK Platform 35 的构建机器会在 Gradle 找不到该 compile SDK 时中断。而在构建成功之后,release APK 会以未裁剪、未混淆的形式发布,因此体积比以往更大。
New VGSDK Fetch Payment Product List node returns store-localized prices
1.3.0 adds product lookup, so a shop can show the price, currency and title the store itself reports for each product id instead of values hard-coded in the game. Both build targets the plugin declares at this release, Android and iOS, run the call.
1.3.0 新增商品查詢,讓商店介面能顯示商店本身針對各商品 ID 回報的價格、貨幣與名稱,而不必在遊戲中寫死。外掛在此版本宣告的兩個建置目標 Android 與 iOS 都會執行該呼叫。
1.3.0 新增商品查询,让商店界面能显示商店本身针对各商品 ID 报告的价格、货币与名称,而不必在游戏中写死。插件在此版本声明的两个构建目标 Android 与 iOS 都会执行该调用。
| UVGSDKFetchPaymentProductList | |
| FVGSDKPaymentProduct | |
| VGSDKWrapper::FetchPaymentProductList |
- Place the VGSDK Fetch Payment Product List node in your shop flow and pass the product ids you sell.
- Branch on bSuccess from its On Completed pin, then read Products on the success path and Error on the failure path.
- Show each product’s DisplayPrice rather than formatting a price yourself, because the store already localizes that string.
- 在商店流程中放入 VGSDK Fetch Payment Product List 節點,並傳入你販售的商品 ID。
- 以 On Completed 接腳的 bSuccess 判斷分支,成功時讀取 Products,失敗時讀取 Error。
- 顯示各商品的 DisplayPrice,不要自行格式化價格,因為商店已完成該字串的本地化。
- 在商店流程中放入 VGSDK Fetch Payment Product List 节点,并传入你销售的商品 ID。
- 以 On Completed 引脚的 bSuccess 判断分支,成功时读取 Products,失败时读取 Error。
- 显示各商品的 DisplayPrice,不要自行格式化价格,因为商店已完成该字符串的本地化。
See the usage and full signature in the Integration guide:
Get productsFVGSDKPaymentProduct請在整合指南中查看用法與完整簽名:
取得商品FVGSDKPaymentProduct请在集成指南中查看用法与完整签名:
获取商品FVGSDKPaymentProductThis addition is opt-in. Nothing breaks if you skip it: your existing integration keeps working, you just don’t gain this capability.
此新增功能為選用。略過不會造成任何問題:你現有的整合仍可正常運作,只是不會獲得此功能。
此新增功能为可选。跳过不会造成任何问题:你现有的集成仍可正常运行,只是不会获得此功能。
New VGSDK Payment Product node reports purchase status on four separate pins
1.3.0 adds the purchase flow, taking an FVGSDKPaymentInfo order and reporting through four separate status delegates instead of one result. OnProcessing is the one to watch, because it means the order is still pending rather than complete.
1.3.0 新增購買流程,以 FVGSDKPaymentInfo 訂單為輸入,並透過四個獨立的狀態委派回報,而非單一結果。其中最需要留意的是 OnProcessing,因為它代表訂單仍在處理中,尚未完成。
1.3.0 新增购买流程,以 FVGSDKPaymentInfo 订单为输入,并通过四个独立的状态委托报告,而非单一结果。其中最需要留意的是 OnProcessing,因为它代表订单仍在处理中,尚未完成。
| UVGSDKPay | |
| FVGSDKPaymentInfo | |
| VGSDKWrapper::Pay |
- Fill an FVGSDKPaymentInfo with the player’s user id, server id, role id, item id, your own app transaction id, and the amount.
- Pass that struct to the VGSDK Payment Product node when the player confirms the purchase.
- Wire all four output pins, namely On Success, On Processing, On Cancel and On Fail.
- Grant the purchased item only from On Success, and show a pending state from On Processing.
- 以玩家的使用者 ID、伺服器 ID、角色 ID、商品 ID、你自己的交易編號與金額填入 FVGSDKPaymentInfo。
- 在玩家確認購買時,將該結構傳入 VGSDK Payment Product 節點。
- 接上全部四個輸出接腳,即 On Success、On Processing、On Cancel 與 On Fail。
- 只在 On Success 發放購買的道具,並在 On Processing 顯示訂單處理中的狀態。
- 以玩家的用户 ID、服务器 ID、角色 ID、商品 ID、你自己的交易编号与金额填入 FVGSDKPaymentInfo。
- 在玩家确认购买时,将该结构传入 VGSDK Payment Product 节点。
- 接上全部四个输出引脚,即 On Success、On Processing、On Cancel 与 On Fail。
- 只在 On Success 发放购买的道具,并在 On Processing 显示订单处理中的状态。
See the usage and full signature in the Integration guide:
PurchaseFVGSDKPaymentInfoPayment: billing server (6xxx)Payment: store / verification (9xxx)請在整合指南中查看用法與完整簽名:
購買FVGSDKPaymentInfo付款: 帳務伺服器(6xxx)付款: 商店/驗證(9xxx)请在集成指南中查看用法与完整签名:
购买FVGSDKPaymentInfo支付: 计费服务器 (6xxx)支付: 商店 / 验证 (9xxx)A game that wires only On Success reacts to nothing when the player cancels or the order stays pending. Granting the item from On Processing over-grants, because that pin fires while the order is still open.
只接上 On Success 的遊戲,在玩家取消或訂單仍在處理中時不會有任何反應。若從 On Processing 發放道具則會超額發放,因為該接腳是在訂單尚未結束時觸發。
只接上 On Success 的游戏,在玩家取消或订单仍在处理中时不会有任何反应。若从 On Processing 发放道具则会超额发放,因为该引脚是在订单尚未结束时触发。
New VGSDK Check Item Reward node reports whether a reward is waiting
1.3.0 adds a check for whether the player has a reward waiting to be granted, so the game can show a claim entry point only when there is one. The check grants nothing by itself, and it is implemented on the Android build target only.
1.3.0 新增查詢玩家是否有待發放的獎勵,讓遊戲只在真的有獎勵可領時才顯示領取入口。此查詢本身不會發放任何獎勵,且僅在 Android 建置目標上實作。
1.3.0 新增查询玩家是否有待发放的奖励,让游戏只在真的有奖励可领时才显示领取入口。此查询本身不会发放任何奖励,且仅在 Android 构建目标上实现。
| UVGSDKCheckItemReward | |
| VGSDKWrapper::CheckItemReward |
- Call the VGSDK Check Item Reward node before you show a claim entry point, passing only the node’s world context.
- Read bIsHasReward on the On Success pin and reveal the claim entry point only when it is true.
- Read Message on the On Fail pin and leave the entry point hidden, because the check did not complete.
- Gate the whole flow on the Android build target, because the iOS helper reports the feature as not supported and a non-packaged build never calls back.
- 在顯示領取入口之前呼叫 VGSDK Check Item Reward 節點,只需傳入節點的 world context。
- 從 On Success 接腳讀取 bIsHasReward,只有為 true 時才顯示領取入口。
- 從 On Fail 接腳讀取 Message,並維持入口隱藏,因為這次查詢並未完成。
- 將整個流程限定在 Android 建置目標,因為 iOS 輔助程式會回報此功能不支援,而未打包的建置完全不會回呼。
- 在显示领取入口之前调用 VGSDK Check Item Reward 节点,只需传入节点的 world context。
- 从 On Success 引脚读取 bIsHasReward,只有为 true 时才显示领取入口。
- 从 On Fail 引脚读取 Message,并保持入口隐藏,因为这次查询并未完成。
- 将整个流程限定在 Android 构建目标,因为 iOS 辅助程序会报告此功能不支持,而未打包的构建完全不会回调。
See the usage and full signature in the Integration guide:
Check item reward請在整合指南中查看用法與完整簽名:
檢查道具獎勵请在集成指南中查看用法与完整签名:
检查道具奖励This addition is opt-in. Nothing breaks if you skip it: your existing integration keeps working, you just don’t gain this capability.
此新增功能為選用。略過不會造成任何問題:你現有的整合仍可正常運作,只是不會獲得此功能。
此新增功能为可选。跳过不会造成任何问题:你现有的集成仍可正常运行,只是不会获得此功能。
New VGSDK Verify Reward node separates retryable from permanent failures
1.3.0 adds the claim itself, taking an FVGSDKRewardInfo and reporting on three pins that split a failure into one worth retrying and one that is final. Like the check node, it is implemented on the Android build target only.
1.3.0 新增領取獎勵的動作,以 FVGSDKRewardInfo 為輸入,並以三個接腳回報,將失敗區分為值得重試與已成定局兩種。與查詢節點相同,此功能僅在 Android 建置目標上實作。
1.3.0 新增领取奖励的动作,以 FVGSDKRewardInfo 为输入,并以三个引脚报告,将失败区分为值得重试与已成定局两种。与查询节点相同,此功能仅在 Android 构建目标上实现。
| UVGSDKVerifyReward | |
| FVGSDKRewardInfo | |
| VGSDKWrapper::VerifyReward |
- Fill an FVGSDKRewardInfo with the player’s user id, server id, role id, your own app transaction id, and the AddInfo string you pass through.
- Pass that struct to the VGSDK Verify Reward node when the player claims the reward.
- Wire all three output pins, then retry the same request from On Fail Retry and stop from On Fail Non Retry.
- Gate the flow on the Android build target, because the iOS helper answers every claim on On Fail Non Retry with a not-supported message.
- 以玩家的使用者 ID、伺服器 ID、角色 ID、你自己的交易編號,以及要一併帶入的 AddInfo 字串填入 FVGSDKRewardInfo。
- 在玩家領取獎勵時,將該結構傳入 VGSDK Verify Reward 節點。
- 接上全部三個輸出接腳,接著在 On Fail Retry 以相同請求重試,並在 On Fail Non Retry 停止重試。
- 將流程限定在 Android 建置目標,因為 iOS 輔助程式會將每次領取都以 On Fail Non Retry 回報功能不支援。
- 以玩家的用户 ID、服务器 ID、角色 ID、你自己的交易编号,以及要一并带入的 AddInfo 字符串填入 FVGSDKRewardInfo。
- 在玩家领取奖励时,将该结构传入 VGSDK Verify Reward 节点。
- 接上全部三个输出引脚,接着在 On Fail Retry 以相同请求重试,并在 On Fail Non Retry 停止重试。
- 将流程限定在 Android 构建目标,因为 iOS 辅助程序会将每次领取都以 On Fail Non Retry 报告功能不支持。
See the usage and full signature in the Integration guide:
Verify rewardFVGSDKRewardInfo請在整合指南中查看用法與完整簽名:
驗證獎勵FVGSDKRewardInfo请在集成指南中查看用法与完整签名:
验证奖励FVGSDKRewardInfoA game that treats On Fail Retry and On Fail Non Retry alike either retries a permanent failure forever or drops a reward the next attempt would have granted.
若遊戲對 On Fail Retry 與 On Fail Non Retry 一視同仁,結果會是對永久性失敗無止境重試,或是放棄一筆下次嘗試本可成功發放的獎勵。
若游戏对 On Fail Retry 与 On Fail Non Retry 一视同仁,结果会是对永久性失败无止境重试,或是放弃一笔下次尝试本可成功发放的奖励。
New VGSDK Fetch Remote Config node reads Firebase Remote Config
1.3.0 adds Firebase Remote Config as an async Blueprint node that takes only the world context and hands back every key in one struct. Every value arrives as a string in the ConfigMap of FVGSDKConfigData, so your game parses its own numbers and flags out of it.
1.3.0 新增 Firebase Remote Config,以非同步 Blueprint 節點提供,只需 world context,並將所有鍵以單一結構回傳。每個值都以字串形式放在 FVGSDKConfigData 的 ConfigMap 中,因此數字與旗標需由你的遊戲自行解析。
1.3.0 新增 Firebase Remote Config,以异步 Blueprint 节点提供,只需 world context,并将所有键以单一结构返回。每个值都以字符串形式放在 FVGSDKConfigData 的 ConfigMap 中,因此数字与标志需由你的游戏自行解析。
| UVGSDKFetchFirebaseConfig | |
| FVGSDKConfigData | |
| VGSDKWrapper::FetchFirebaseConfig |
- Place the VGSDK Fetch Remote Config node where your game needs its server-driven values, and wire its World Context pin from Self.
- Read your keys by name from the ConfigMap of the ConfigData pin.
- Parse each value from its string form into the number or flag your game expects.
- Handle bSuccess false by falling back to your built-in defaults, and read the Error pin for the reason.
- 在遊戲需要伺服器驅動數值之處放置 VGSDK Fetch Remote Config 節點,並將 World Context 接腳由 Self 連接。
- 從 ConfigData 接腳的 ConfigMap 依鍵名讀取你的設定值。
- 將每個值從字串形式解析為遊戲所需的數字或旗標。
- 在 bSuccess 為 false 時退回你內建的預設值,並從 Error 接腳讀取原因。
- 在游戏需要服务端驱动数值之处放置 VGSDK Fetch Remote Config 节点,并将 World Context 引脚由 Self 连接。
- 从 ConfigData 引脚的 ConfigMap 按键名读取你的配置值。
- 将每个值从字符串形式解析为游戏所需的数字或标志。
- 在 bSuccess 为 false 时退回你内置的默认值,并从 Error 引脚读取原因。
See the usage and full signature in the Integration guide:
Fetch Firebase Remote Config請在整合指南中查看用法與完整簽名:
取得 Firebase Remote Config请在集成指南中查看用法与完整签名:
获取 Firebase Remote ConfigNothing breaks if you skip it. Your tunable values stay baked into the build, so changing one needs a new client release instead of a console change.
略過不會造成任何問題。你的可調數值仍會固定在建置中,因此要修改任一項就得發佈新的用戶端版本,而非在後台調整。
跳过不会造成任何问题。你的可调数值仍会固定在构建中,因此要修改任一项就得发布新的客户端版本,而非在后台调整。
New VGSDK Show Web View node opens pages inside the game
1.3.0 adds an in-app WebView so events and announcements open inside the game instead of in an external browser. Its On Completed pin fires when the player closes the WebView rather than when the page finishes loading, so it marks the end of the visit and not a successful load.
1.3.0 新增應用程式內 WebView,讓活動與公告在遊戲內開啟,而非跳出外部瀏覽器。其 On Completed 接腳在玩家關閉 WebView 時觸發,而非頁面載入完成時,因此它代表這次瀏覽的結束,而不是載入成功。
1.3.0 新增应用内 WebView,让活动与公告在游戏内打开,而非跳出外部浏览器。其 On Completed 引脚在玩家关闭 WebView 时触发,而非页面加载完成时,因此它代表这次浏览的结束,而不是加载成功。
| UVGSDKShowWebView | |
| VGSDKWrapper::ShowWebView |
- Place the VGSDK Show Web View node with the page URL where you previously opened an external browser.
- Resume your game from the On Completed pin, which is the moment the player closed the WebView.
- Handle bSuccess false on the Android build target, where the Error pin carries the reason, while the iOS target reports closure only.
- 在原本會開啟外部瀏覽器之處,改以頁面網址放置 VGSDK Show Web View 節點。
- 從 On Completed 接腳恢復遊戲流程,該時點即玩家關閉 WebView 的時刻。
- 在 Android 建置目標上處理 bSuccess 為 false 的情形,此時 Error 接腳會帶有原因,而 iOS 建置目標只回報關閉。
- 在原本会打开外部浏览器之处,改以页面网址放置 VGSDK Show Web View 节点。
- 从 On Completed 引脚恢复游戏流程,该时点即玩家关闭 WebView 的时刻。
- 在 Android 构建目标上处理 bSuccess 为 false 的情形,此时 Error 引脚会带有原因,而 iOS 构建目标只报告关闭。
See the usage and full signature in the Integration guide:
In-App WebView請在整合指南中查看用法與完整簽名:
應用程式內 WebView请在集成指南中查看用法与完整签名:
应用内 WebViewNothing breaks if you skip the feature. Players keep leaving the game for an external browser to read an announcement, and some of them do not come back to the session.
若不採用此功能,不會有任何損壞。玩家仍需離開遊戲、改用外部瀏覽器閱讀公告,其中一部分不會再回到本次遊玩。
若不采用此功能,不会有任何损坏。玩家仍需离开游戏、改用外部浏览器阅读公告,其中一部分不会再回到本次游玩。
New VGSDK Share Facebook Photo node shares a Base64 photo
1.3.0 adds Facebook photo sharing as an async Blueprint node that takes the photo as a Base64 string. The game encodes the image itself, so there is no file path or texture to hand over.
1.3.0 新增 Facebook 相片分享,以非同步 Blueprint 節點提供,相片以 Base64 字串傳入。影像由遊戲自行編碼,因此不需要交出檔案路徑或貼圖。
1.3.0 新增 Facebook 照片分享,以异步 Blueprint 节点提供,照片以 Base64 字符串传入。图像由游戏自行编码,因此不需要交出文件路径或贴图。
| UVGSDKShareFacebookPhoto | |
| VGSDKWrapper::ShareFacebookPhoto |
- Encode the photo your game wants to share into a Base64 string before you call the node.
- Place the VGSDK Share Facebook Photo node and pass that string on its Base64 Image pin.
- Wire all three outputs, because On Success and On Fail each carry a Message while On Cancel carries no pins.
- 在呼叫節點前,先將遊戲要分享的相片編碼為 Base64 字串。
- 放置 VGSDK Share Facebook Photo 節點,並將該字串傳入其 Base64 Image 接腳。
- 連接全部三個輸出,因為 On Success 與 On Fail 各自帶有 Message,而 On Cancel 沒有任何接腳。
- 在调用节点前,先将游戏要分享的照片编码为 Base64 字符串。
- 放置 VGSDK Share Facebook Photo 节点,并将该字符串传入其 Base64 Image 引脚。
- 连接全部三个输出,因为 On Success 与 On Fail 各自带有 Message,而 On Cancel 没有任何引脚。
See the usage and full signature in the Integration guide:
Share photo to Facebook請在整合指南中查看用法與完整簽名:
分享相片到 Facebook请在集成指南中查看用法与完整签名:
分享照片到 FacebookNothing breaks if you skip the feature. Your players have no way to post a screenshot from inside the game, so a share-for-reward loop has nothing to hook onto.
若不採用此功能,不會有任何損壞。玩家無法從遊戲內張貼截圖,因此分享換獎勵的循環將無處可接。
若不采用此功能,不会有任何损坏。玩家无法从游戏内发布截图,因此分享换奖励的循环将无处可接。
New VGSDK Rating node asks the store for the in-app review prompt
1.3.0 adds the in-app review prompt as a static Blueprint function that takes no arguments and returns nothing. The store decides whether the prompt actually appears, so the call is fire-and-forget.
1.3.0 新增應用程式內評論表單,以不需引數也沒有回傳值的靜態 Blueprint 函式提供。是否真的顯示表單由商店決定,因此這個呼叫發出後就不管結果。
1.3.0 新增应用内评价面板,以不需参数也没有返回值的静态 Blueprint 函数提供。是否真的展示面板由商店决定,因此这个调用发出后就不管结果。
| UVGSDKBlueprint::Rating | |
| VGSDKWrapper::Rating |
- Place the VGSDK Rating node at a moment the player is likely to feel good about the game, such as right after a cleared stage.
- Keep your own UI off the result, because the node has no output pins to wait on.
- Test on a real device signed in to the store, because the operating system limits how often the prompt is shown.
- 在玩家對遊戲觀感較好的時點放置 VGSDK Rating 節點,例如剛通關一個關卡之後。
- 不要讓自家 UI 依賴其結果,因為該節點沒有可等待的輸出接腳。
- 在已登入商店的實機上測試,因為作業系統會限制表單的顯示頻率。
- 在玩家对游戏观感较好的时点放置 VGSDK Rating 节点,例如刚通关一个关卡之后。
- 不要让自家 UI 依赖其结果,因为该节点没有可等待的输出引脚。
- 在已登录商店的真机上测试,因为操作系统会限制面板的展示频率。
See the usage and full signature in the Integration guide:
Store rating (in-app review)請在整合指南中查看用法與完整簽名:
商店評分(應用程式內評論)请在集成指南中查看用法与完整签名:
商店评分(应用内评价)This addition is opt-in. Nothing breaks if you skip it: your existing integration keeps working, you just don’t gain this capability.
此新增功能為選用。略過不會造成任何問題:你現有的整合仍可正常運作,只是不會獲得此功能。
此新增功能为可选。跳过不会造成任何问题:你现有的集成仍可正常运行,只是不会获得此功能。
New VGSDK Get Current UserInfo node replaces caching the login result
Before 1.3.0 the login callback’s UserInfo pin was the only view of the signed-in player, so a game had to cache that struct and keep its own copy alive. 1.3.0 adds a BlueprintPure accessor that returns FVGSDKUserInfo from the SDK whenever you ask.
在 1.3.0 之前,登入回呼的 UserInfo 接腳是查看已登入玩家的唯一途徑,因此遊戲必須自行快取該結構並維護自己的副本。1.3.0 新增一個 BlueprintPure 存取器,可在任何時候從 SDK 取得 FVGSDKUserInfo。
在 1.3.0 之前,登录回调的 UserInfo 引脚是查看已登录玩家的唯一途径,因此游戏必须自行缓存该结构并维护自己的副本。1.3.0 新增一个 BlueprintPure 访问器,可在任何时候从 SDK 获取 FVGSDKUserInfo。
| UVGSDKBlueprint::GetCurrentUserInfo | |
| VGSDKWrapper::GetCurrentUserInfo |
- Replace every read of your cached login result with the VGSDK Get Current UserInfo node.
- Delete the variables and the plumbing that carried that cached copy around your game.
- Treat an empty UserId on the returned struct as no signed-in session.
- 將每一處讀取自行快取登入結果的地方,改為使用 VGSDK Get Current UserInfo 節點。
- 刪除在遊戲中傳遞該快取副本的變數與相關接線。
- 將回傳結構中 UserId 為空視為沒有已登入的工作階段。
- 将每一处读取自行缓存登录结果的地方,改为使用 VGSDK Get Current UserInfo 节点。
- 删除在游戏中传递该缓存副本的变量与相关连线。
- 将返回结构中 UserId 为空视为没有已登录的会话。
See the usage and full signature in the Integration guide:
Get current user請在整合指南中查看用法與完整簽名:
取得目前使用者请在集成指南中查看用法与完整签名:
获取当前用户Nothing breaks if you skip it, because your cached copy still works. That copy only ever holds what login returned, so a later session refresh or a re-login leaves it stale.
略過不會造成任何問題,你自行快取的副本仍可運作。但該副本只會保存登入當時回傳的內容,因此之後的工作階段更新或重新登入都會讓它過時。
跳过不会造成任何问题,你自行缓存的副本仍可运行。但该副本只会保存登录当时返回的内容,因此之后的会话更新或重新登录都会让它过时。
Windows (PC) is a supported build target
1.4.1 adds Win64 to the plugin’s supported target platforms, gains a Win64 build branch that delay-loads and stages VNGGamesSDK.dll plus vnggamessdk.dat next to your game binary, and wraps the native PC SDK in a new VGSDKWindowsHelper. That helper implements only login and custom-event analytics, namely AppsFlyer plus the data platform, so every other call falls through to the plugin’s default helper.
1.4.1 將 Win64 加入外掛支援的目標平台,新增 Win64 建置分支以延遲載入並將 VNGGamesSDK.dll 與 vnggamessdk.dat 部署到遊戲執行檔旁邊,並以新的 VGSDKWindowsHelper 包裝原生 PC SDK。該輔助程式僅實作登入與自訂事件分析,也就是 AppsFlyer 與資料平台,因此其餘呼叫都會落到外掛的預設輔助程式。
1.4.1 将 Win64 加入插件支持的目标平台,新增 Win64 构建分支以延迟加载并将 VNGGamesSDK.dll 与 vnggamessdk.dat 部署到游戏可执行文件旁边,并以新的 VGSDKWindowsHelper 包装原生 PC SDK。该辅助程序仅实现登录与自定义事件分析,也就是 AppsFlyer 与数据平台,因此其余调用都会落到插件的默认辅助程序。
| VGSDKWindowsHelper | |
| VNGGamesSDK.InitConfig.PackageName |
- Add
Win64to theSupportedTargetPlatformsof the VNGGamesSDK entry in your.uproject. - Add a
[VNGGamesSDK.InitConfig]section to your project’sDefaultGame.iniand setPackageNameto your package name. - Re-test your custom events on a packaged Win64 build.
- Keep the feature nodes the Windows helper does not implement off your PC code paths.
- 在
.uproject中 VNGGamesSDK 項目的SupportedTargetPlatforms加入Win64。 - 在專案的
DefaultGame.ini中加入[VNGGamesSDK.InitConfig]區段,並將PackageName設為你的套件名稱。 - 在封裝後的 Win64 建置上重新測試你的自訂事件。
- 讓 Windows 輔助程式未實作的功能節點不要出現在 PC 的程式流程中。
- 在
.uproject中 VNGGamesSDK 项的SupportedTargetPlatforms加入Win64。 - 在项目的
DefaultGame.ini中加入[VNGGamesSDK.InitConfig]区段,并将PackageName设为你的包名。 - 在打包后的 Win64 构建上重新测试你的自定义事件。
- 让 Windows 辅助程序未实现的功能节点不要出现在 PC 的程序流程中。
Leave PackageName blank and initialization logs an error and falls back to the project name, so your analytics and login attribute to the project name instead of your package. A Blueprint async node wired to a feature the Windows helper does not implement never reports completion, so that flow waits forever on the Windows build target.
若 PackageName 留空,初始化會記錄錯誤並改用專案名稱,你的分析與登入資料便會歸屬到專案名稱而非你的套件名稱。連接到 Windows 輔助程式未實作功能的 Blueprint 非同步節點永遠不會回報完成,該流程在 Windows 建置目標上會一直等待下去。
若 PackageName 留空,初始化会记录错误并改用项目名称,你的分析与登录数据便会归属到项目名称而非你的包名。连接到 Windows 辅助程序未实现功能的 Blueprint 异步节点永远不会报告完成,该流程在 Windows 构建目标上会一直等待下去。
New initialization-completed signal, required for a Windows build
1.4.1 adds the SDK-initialized signal as a new async node, VGSDK On Initialized (UOnInitSDK), alongside VGSDKWrapper::SetOnInitCompletedListener and VGSDKWrapper::IsInitialized. The module still auto-initializes on load, but on the Windows build target that native init is asynchronous, while on Android and iOS it is synchronous and the node fires immediately.
1.4.1 以新的非同步節點 VGSDK On Initialized(UOnInitSDK)提供 SDK 初始化完成訊號,並一併新增 VGSDKWrapper::SetOnInitCompletedListener 與 VGSDKWrapper::IsInitialized。模組仍會在載入時自行初始化,但在 Windows 建置目標上該原生初始化是非同步的,在 Android 與 iOS 上則是同步的,節點會立即觸發。
1.4.1 以新的异步节点 VGSDK On Initialized(UOnInitSDK)提供 SDK 初始化完成信号,并一并新增 VGSDKWrapper::SetOnInitCompletedListener 与 VGSDKWrapper::IsInitialized。模块仍会在加载时自行初始化,但在 Windows 构建目标上该原生初始化是异步的,在 Android 与 iOS 上则是同步的,节点会立即触发。
| UOnInitSDK | |
| VGSDKWrapper::SetOnInitCompletedListener | |
| VGSDKWrapper::IsInitialized |
- Add the
VGSDK On Initializednode to your startup Blueprint ahead of any other SDK node. - Gate your first feature call on that node’s success output.
- Handle the failure output as well, because initialization can resolve unsuccessfully on the Windows build target.
- 在啟動 Blueprint 中,於其他 SDK 節點之前加入
VGSDK On Initialized節點。 - 以該節點的成功輸出作為第一個功能呼叫的前置條件。
- 同時處理失敗輸出,因為在 Windows 建置目標上初始化可能以失敗告終。
- 在启动 Blueprint 中,于其他 SDK 节点之前加入
VGSDK On Initialized节点。 - 以该节点的成功输出作为第一个功能调用的前置条件。
- 同时处理失败输出,因为在 Windows 构建目标上初始化可能以失败告终。
See the usage and full signature in the Integration guide:
Wait for initialization請在整合指南中查看用法與完整簽名:
等待初始化完成请在集成指南中查看用法与完整签名:
等待初始化完成On the Windows build target a feature call made before initialization resolves runs against an SDK that is not initialized yet, so it fails or does nothing rather than waiting for init. Android and iOS builds are unaffected, because initialization there is synchronous and has already finished by the time your first node runs.
在 Windows 建置目標上,若在初始化完成前呼叫功能,該呼叫會在尚未初始化的 SDK 上執行,因而失敗或毫無作用,而不是等待初始化完成。Android 與 iOS 建置不受影響,因為這兩個平台的初始化是同步的,在你的第一個節點執行時就已完成。
在 Windows 构建目标上,若在初始化完成前调用功能,该调用会在尚未初始化的 SDK 上执行,因而失败或毫无作用,而不是等待初始化完成。Android 与 iOS 构建不受影响,因为这两个平台的初始化是同步的,在你的第一个节点执行时就已完成。
New VGSDK Show Login Form node for the SDK login form
1.4.1 adds a login entry point that presents the SDK’s own login form, VGSDK Show Login Form (UShowLoginForm), broadcasting the same success, user info, and error result as Auto Login. It deprecates nothing: VGSDK Auto Login is unchanged and stays the login path on Android and iOS, while on the Windows build target Auto Login reports NOT_SUPPORTED and this node takes its place.
1.4.1 新增一個登入進入點 VGSDK Show Login Form(UShowLoginForm),直接呈現 SDK 內建的登入表單,並廣播與 Auto Login 相同的成功狀態、使用者資訊與錯誤結果。它並未淘汰任何項目:VGSDK Auto Login 未變更,在 Android 與 iOS 上仍是登入途徑,而在 Windows 建置目標上 Auto Login 會回報 NOT_SUPPORTED,改由此節點承接。
1.4.1 新增一个登录入口 VGSDK Show Login Form(UShowLoginForm),直接呈现 SDK 内置的登录表单,并广播与 Auto Login 相同的成功状态、用户信息与错误结果。它并未淘汰任何内容:VGSDK Auto Login 未变更,在 Android 与 iOS 上仍是登录途径,而在 Windows 构建目标上 Auto Login 会报告 NOT_SUPPORTED,改由此节点承接。
| UShowLoginForm | |
| IVGSDKPlatformHelper::ShowLoginForm |
- Add the
VGSDK Show Login Formnode where you present login on your Windows build. - Use it in place of
VGSDK Auto Loginon that target, because Auto Login is not supported there. - Read the signed-in player from the node’s user info output, and branch on the
FVGSDKErrorstring code when it reports failure. - Keep your Android and iOS flows on
VGSDK Auto Login, where this node is not supported.
- 在 Windows 建置中呈現登入畫面的位置加入
VGSDK Show Login Form節點。 - 在該目標上以此節點取代
VGSDK Auto Login,因為 Auto Login 在該平台不受支援。 - 從節點的使用者資訊輸出讀取已登入的玩家,並在回報失敗時依
FVGSDKError的字串代碼分流處理。 - Android 與 iOS 流程請維持使用
VGSDK Auto Login,因為此節點在該處不受支援。
- 在 Windows 构建中呈现登录界面的位置加入
VGSDK Show Login Form节点。 - 在该目标上以此节点取代
VGSDK Auto Login,因为 Auto Login 在该平台不受支持。 - 从节点的用户信息输出读取已登录的玩家,并在报告失败时依
FVGSDKError的字符串代码分流处理。 - Android 与 iOS 流程请保持使用
VGSDK Auto Login,因为此节点在该处不受支持。
See the usage and full signature in the Integration guide:
Show the login form請在整合指南中查看用法與完整簽名:
顯示登入表單请在集成指南中查看用法与完整签名:
显示登录表单A Windows build that keeps only VGSDK Auto Login cannot sign anyone in, because Auto Login answers with NOT_SUPPORTED on that target. Android and iOS builds lose nothing by skipping this node.
若 Windows 建置只保留 VGSDK Auto Login,將無法讓任何玩家登入,因為 Auto Login 在該目標上會以 NOT_SUPPORTED 回應。Android 與 iOS 建置略過此節點則不會有任何損失。
若 Windows 构建只保留 VGSDK Auto Login,将无法让任何玩家登录,因为 Auto Login 在该目标上会以 NOT_SUPPORTED 响应。Android 与 iOS 构建跳过此节点则不会有任何损失。
New Get Account and Select Account nodes for Level Up Launcher multi-account
1.4.1 adds the Level Up Launcher multi-account flow, implemented on the Windows build target only. VGSDK Get Account (UGetAccount) signs the player in with the account the Launcher already holds, VGSDK Select Account (USelectAccount) opens the picker so the player can switch, and the native SDK falls back to its own login form when no Launcher account is available.
1.4.1 新增 Level Up Launcher 多帳號流程,僅在 Windows 建置目標上實作。VGSDK Get Account(UGetAccount)會以啟動器既有的帳號登入玩家,VGSDK Select Account(USelectAccount)則開啟選擇畫面讓玩家切換,而當啟動器沒有可用帳號時,原生 SDK 會退回其自身的登入表單。
1.4.1 新增 Level Up Launcher 多账号流程,仅在 Windows 构建目标上实现。VGSDK Get Account(UGetAccount)会以启动器既有的账号登录玩家,VGSDK Select Account(USelectAccount)则打开选择界面让玩家切换,而当启动器没有可用账号时,原生 SDK 会退回其自身的登录表单。
| UGetAccount | |
| USelectAccount | |
| IVGSDKPlatformHelper::GetAccount | |
| IVGSDKPlatformHelper::SelectAccount |
- Add the
VGSDK Get Accountnode at startup to sign in with the account the Launcher already holds. - Add the
VGSDK Select Accountnode to your switch-account control so the player can pick another account. - Reuse your
VGSDK Show Login Formhandling, because both nodes broadcast the same success, user info, and error result. - Branch on the
FVGSDKErrorstring code when either node reports failure, and fall back to your normal login.
- 在啟動時加入
VGSDK Get Account節點,以啟動器既有的帳號登入。 - 在切換帳號的操作中加入
VGSDK Select Account節點,讓玩家選擇其他帳號。 - 沿用你為
VGSDK Show Login Form撰寫的處理邏輯,因為兩個節點廣播相同的成功狀態、使用者資訊與錯誤結果。 - 在任一節點回報失敗時,依
FVGSDKError的字串代碼分流處理,並退回你原本的登入流程。
- 在启动时加入
VGSDK Get Account节点,以启动器既有的账号登录。 - 在切换账号的操作中加入
VGSDK Select Account节点,让玩家选择其他账号。 - 沿用你为
VGSDK Show Login Form编写的处理逻辑,因为两个节点广播相同的成功状态、用户信息与错误结果。 - 在任一节点报告失败时,依
FVGSDKError的字符串代码分流处理,并退回你原本的登录流程。
See the usage and full signature in the Integration guide:
Get accountSelect accountThis addition is opt-in. Nothing breaks if you skip it: your existing integration keeps working, you just don’t gain this capability.
此新增功能為選用。略過不會造成任何問題:你現有的整合仍可正常運作,只是不會獲得此功能。
此新增功能为可选。跳过不会造成任何问题:你现有的集成仍可正常运行,只是不会获得此功能。