一旦你销毁了广告(adMob),该怎么回来?

时间:2016-12-08 04:47:42

标签: unity3d admob

这是我第一次实施广告。我正在使用adMob。我一直在搞乱不同的代码片段,但如果我销毁了它,我似乎无法制作新的广告。

private void RequestInterstitial()
{
    // These ad units are configured to always serve test ads.
    #if UNITY_EDITOR
    string adUnitId = "unused";
#elif UNITY_ANDROID
    string adUnitId = "ca-app-pub-3895731736666139/7005438200";
#elif UNITY_IPHONE
    string adUnitId = "hmm";
#else
    string adUnitId = "unexpected_platform";
#endif

    // Create an interstitial.
    this.interstitial = new InterstitialAd(adUnitId);

    // Register for ad events.
    this.interstitial.OnAdLoaded += this.HandleInterstitialLoaded;
    this.interstitial.OnAdFailedToLoad += this.HandleInterstitialFailedToLoad;
    this.interstitial.OnAdOpening += this.HandleInterstitialOpened;
    this.interstitial.OnAdClosed += this.HandleInterstitialClosed;
    this.interstitial.OnAdLeavingApplication += this.HandleInterstitialLeftApplication;

    // Load an interstitial ad.
    this.interstitial.LoadAd(this.CreateAdRequest());
}

private void ShowInterstitial()
{
    if (this.interstitial.IsLoaded())
    {
        this.interstitial.Show();
    }
    else
    {
        MonoBehaviour.print("Interstitial is not ready yet");
        text.text = "No Ad Loaded";
    }
}

现在要销毁

this.interstitial.Destroy();

点击" x"是否会调用Destroy函数?在插页式广告上?

然后我该如何把它带回来?

1 个答案:

答案 0 :(得分:2)

  

单击“x”时,是否会调用Destroy函数   间质性?

即可。非常不可能。如果是这样,则每次再次展示广告之前,您必须执行new InterstitialAd(adUnitId);次。单击x时,很可能会调用InterstitialAd.Hide();

  

我一直在搞乱不同的代码片段,但我不能   如果我将其销毁,似乎会制作一个新广告。

     

然后我该如何把它带回来?

除非插页式声明超出范围,否则你永远不应销毁它,然后你应该致电interstitial.Destroy()

例如

如果在函数中声明了插页式广告,则必须在该函数的末尾销毁它,以避免内存泄漏。

如果在函数/全局变量之外声明了插页式广告,则只应在Unity OnDisable()函数中将其销毁。在你的情况下,它是一个全局变量,所以必须将interstitial.Destroy()放在OnDisable()函数中,这样当你的脚本破坏时,它也会破坏interstitial

现在,如果您最终销毁插页式广告,则可以再次执行interstitial = new InterstitialAd(adUnitId);将其恢复,然后拨打interstitial.LoadAd(),然后再调用interstitial.Show()。在致电interstitial.Show()之前,您必须首先检查是否已完成加载if(interstitial.IsLoaded()),然后再致电interstitial.Show()

最后,当您注册某个活动时,您还应该在OnDisable()功能中取消注册该活动。您注册+=并注销-=。因此,在调用this.interstitial.OnAdLoaded -= this.HandleInterstitialLoaded;之前,您应该使用OnDisable()interstitial.Destroy()函数中的其他事件来执行此操作。