这是我第一次实施广告。我正在使用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函数?在插页式广告上?
然后我该如何把它带回来?
答案 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()
函数中的其他事件来执行此操作。