繁体   English   中英

Admob运行时问题-Unity / iOS构建-奖励广告仅运行一次/第二次运行会导致问题

[英]Admob runtime issue - Unity / iOS Build - Rewarded Ad runs once / 2nd run causing issues

希望有人可以帮助我解决这个异常!

因此,这里有一些背景信息:我使用的是当玩家死亡时触发的奖励广告。 这会加载一个“ rewardAd”弹出窗口,供玩家选择观看视频以获取奖励或关闭请求,然后游戏结束。 在游戏的初始运行中,它可以完美运行。 奖励是获得额外的生命并继续玩游戏。 这也很好。

但是...当玩家第二次死亡时,将显示“ rewardAd”弹出窗口,但是当单击“播放广告”按钮时,弹出窗口消失,从而使游戏处于暂停状态...从此处开始,暂停按钮仍显示在屏幕上的按钮处于活动状态,单击该按钮将弹出“暂停”弹出菜单。 如果单击恢复游戏按钮,则将再次显示“ rewardAd”弹出窗口。如果这次单击“播放广告”按钮,则广告将再次运行。

因此,似乎该问题将在玩家第一次死亡时播放广告,但第二次只会使游戏处于暂停状态...除非您按下暂停按钮以调出“暂停”弹出菜单,然后继续从该菜单中再次弹出“ rewardAd”弹出窗口,然后这次广告确实加载并再次投放,并且一切正常。

所以我的问题是,为什么我第二次死亡时视频广告不能正确加载,除非我暂停游戏(处于已经暂停的状态)然后继续播放并再次获得rewardAd弹出窗口,然后它将运行广告再次。

由于某种原因,它仅在重新触发两次“ rewardAd”弹出窗口时才重新加载视频广告。

这是我的代码:

在播放器类中:

void fixedUpdate () {
    if (health == 0) {
        helthSprite.fillAmount = 0f;

        GameObject.Find ("RewardAdPopup").GetComponent<TweenAlpha> ().PlayForward ();
        GeneralScript.instance.pauseGame();
    }
}

现在,“ rewardAdPopup”具有两个按钮“播放”和“关闭”,这两个按钮分别在GeneralScript类中与这两个方法连接在一起:

public void showAd ()
{
    isRewarded = false;
    Admob.Instance ().loadRewardedVideo ("ca-app-pub-3917955116464255/1873040720");
    Admob.Instance ().rewardedVideoEventHandler += onRewardVideoEvent;
    if (Admob.Instance ().isRewardedVideoReady ()) {
        Admob.Instance ().showRewardedVideo ();
    }
}

public void adDeclined ()
{
    Bird.instance.showGameOverPopup ();
}

现在,我在“开始”方法(底部)中也有“ loadVideo”实例-否则即使是第一次也不会加载视频:

void Start ()
{
    instance = this;
    if (Application.loadedLevelName.Equals ("GameScene")) {
        InvokeRepeating ("IncreseSpeed", 0f, GameManager.MaxSpawnTime);
    }       
    checkSound ();

    Admob.Instance ().loadRewardedVideo ("ca-app-pub-3917955116464255/1873040720");
}

最后是“ onRewardVideoEventMethod”:

void onRewardVideoEvent(string eventName, string message) {

    if (eventName == AdmobEvent.onAdClosed) {

        print ("Ad Closed");
        if (isRewarded) {
            print ("ad watched");
            Bird.instance.health = GameManager.curBirdHealth;
            resumeGame ();
        } else {
            adDeclined ();
        }

    } else if (eventName == AdmobEvent.onRewarded) {
        print ("Ad Rewarded");
        isRewarded = true;


    } else if (eventName == AdmobEvent.adViewWillDismissScreen) {
        if (isRewarded) {
            print("ad dismissed");
            Bird.instance.health = GameManager.curBirdHealth;
            resumeGame ();
        }
    }
}

我敢肯定,这个问题就在这里...可能与UI按钮脚本下Unity Inspector中“播放”按钮的“ OnClick”设置有关,但我不确定。

任何帮助将不胜感激! 这让我难过...

您的方法showAd在这一行中有问题

public void showAd ()
{
   //.....
   Admob.Instance ().rewardedVideoEventHandler += onRewardVideoEvent;
   //.....
}

每次播放广告时,您都会添加另一个事件处理程序。 从外观Admob.Instance是一个单例。

Alo作为另一个建议,仅对物理使用fixedUpdate

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM