Столкнулся с похожей проблемой.
Делал все по гайдам admob, однако на телефоне спустя несколько перезапусков сцены, игра начинала фризовать.
Это проявлялось в отклике на сенсор.
Всего в игре было 2 сцены, на первой сцене инициализация admob и показ баннера, а на второй сцене только показ баннера.
При многократных перезапусках сцены начинались фризы, проседания fps не было.
Помог метод onDestroy, который выполняется при загрузке новой сцены (перезапуске).
Так выглядит мой код:
Используется csharp
using UnityEngine;
using GoogleMobileAds.Api;
using System;
public class AdsBanner : MonoBehaviour
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
string adUnitId = "";
#else
string adUnitId = "unexpected_platform";
#endif
private BannerView bannerView;
private void Start()
{
RequestBanner();
}
private void RequestBanner()
{
this.bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);
this.bannerView.OnAdLoaded += this.HandleOnAdLoaded;
this.bannerView.OnAdFailedToLoad += this.HandleOnAdFailedToLoad;
this.bannerView.OnAdOpening += this.HandleOnAdOpened;
this.bannerView.OnAdClosed += this.HandleOnAdClosed;
this.bannerView.OnAdLeavingApplication += this.HandleOnAdLeavingApplication;
AdRequest request = new AdRequest.Builder().Build();
this.bannerView.LoadAd(request);
}
public void HandleOnAdLoaded(object sender, EventArgs args)
{
Debug.Log("Загрузка завершена");
}
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
+ args.Message);
}
public void HandleOnAdOpened(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdOpened event received");
}
public void HandleOnAdClosed(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdClosed event received");
}
public void HandleOnAdLeavingApplication(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdLeavingApplication event received");
}
private void OnDestroy()
{
bannerView.Destroy();
}
}