在unity 5中,每次插页广告显示时,内存都会增加

本文关键字:显示 内存 增加 unity | 更新日期: 2023-09-27 18:11:29

我使用google admob在unity 5中显示插页式广告。我从github下载了googleleads移动unity包和googlemobileadssdkios。我在Xcode中创建并运行游戏,它会显示条幅广告和插页式广告。我使用调试导航器查看每次加载和关闭广告时的内存消耗情况。我注意到,每次加载插页广告时,内存消耗都在增加。这意味着在关闭插页广告时内存不会被释放。

我没有改变从github下载的源代码。如果在这种模式下内存增加,则应用程序将由于内存不足而终止。那么,如何在插页广告关闭后释放内存呢?

在unity 5中,每次插页广告显示时,内存都会增加

问题可能在于您如何使用InterstitialAd API。如果不正确使用,您将获得内存泄漏。

如果你在一个函数中创建新的interstitial实例,并且实例变量被声明为局部变量,你必须在函数结束之前或者在你失去对interstitial类的引用之前调用interstitial类的Destroy函数。

例如:

void showAdFunction()
{
    InterstitialAd interstitial = new InterstitialAd(adUnitId);
    AdRequest request = new AdRequest.Builder().Build();
    //.... 
    interstitial.LoadAd(request);
    interstitial.Destroy(); //Must do this before losing the reference
}

现在,如果你有InterstitialAd实例作为一个全局变量,并且它里面的脚本正在被另一个脚本销毁,你必须在OnDestroy函数中销毁InterstitialAd实例。

private InterstitialAd interstitial;
void showAdFunction()
{
    interstitial = new InterstitialAd(adUnitId);
    AdRequest request = new AdRequest.Builder().Build();
    //....   
    interstitial.LoadAd(request);
}
void OnDestroy()
{
    interstitial.Destroy(); //Destroy
}