Unity 通过 FRVRSDK.Ad 暴露两种广告类型:插屏(非自愿打断,全屏)与 激励(玩家自愿,看完拿到奖励)。两者都基于回调 —— 你提供 onStart / onError / onFinish 处理函数。
FRVRSDK.Ad.ShowInterstitialAd(
onStart: () => Debug.Log("Interstitial started"),
onError: error => Debug.Log("Interstitial error: " + error),
onFinish: () => Debug.Log("Interstitial finished"));
无论用户看完还是中途关闭,onFinish 都会触发 —— 它只表示广告视图结束。插屏没有”看完 vs. 投放成功”这种概念。
FRVRSDK.Ad.ShowRewardAd(
onStart: () => Debug.Log("Reward started"),
onError: error => Debug.Log("Reward error: " + error),
onFinish: () => GiveExtraLife()); // 只在成功完成时调用
onFinish 只在用户看完整个广告(完整观看)时触发。如果跳过、关闭或广告渲染失败,触发的是 onError —— 这种情况下你不要发奖励。
void OnDoubleRewardButtonPressed()
{
doubleRewardButton.interactable = false;
FRVRSDK.Ad.ShowRewardAd(
onStart: () => { /* 暂停游戏音频等 */ },
onError: err => {
doubleRewardButton.interactable = true;
ShowToast("Ad unavailable right now");
},
onFinish: () => {
currentRunCoins *= 2;
ShowToast("Rewarded!");
});
}
插屏默认有节流 —— 底层 SDK 强制两次插屏之间的最短间隔,并屏蔽 init 后头约 100 秒。游戏代码里不需要再加自己的节流。如果某次插屏调用触发 onError,通常就是节流器在说”还不行”。
激励广告不节流 —— 按需触发。
当一个插屏或激励广告打开时,SDK 会自动挂起浏览器标签页在广告下的渲染/音频行为。Unity 游戏通常通过封装包转发的浏览器 focus/blur 信号来处理这件事 —— 你不必手动暂停自己的游戏循环。