跳转到内容

广告(Unity)

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 —— 这种情况下你不要发奖励。

典型范式:“看广告拿 2 倍金币”

Section titled “典型范式:“看广告拿 2 倍金币””
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 信号来处理这件事 —— 你不必手动暂停自己的游戏循环。