В Unity с использованием SDK AdMob для отображения межстраничной рекламы можно отслеживать состояния рекламы с помощью колбэков, предоставляемых библиотекой. Чтобы проверить, была ли реклама закрыта, вы можете реализовать обработчики событий на статус показа рекламы.
Вот основные шаги, чтобы реализовать это:
1. **Подписывайтесь на события**: Используйте события `OnAdClosed` и `OnAdFailedToShow` для обработки состояния рекламы.
2. **Создайте обработчики**: Реализуйте логику, которая будет управлять уничтожением рекламы только после того, как она была закрыта.
Пример кода может выглядеть следующим образом:
```csharp
using GoogleMobileAds.Api;
using UnityEngine;
public class AdManager : MonoBehaviour
{
private InterstitialAd interstitial;
void Start()
{
// Инициализация AdMob
MobileAds.Initialize(initStatus => { });
RequestInterstitial();
}
private void RequestInterstitial()
{
string adUnitId = "ваш_идентификатор_рекламы";
interstitial = new InterstitialAd(adUnitId);
// Подписка на события
interstitial.OnAdClosed += HandleOnAdClosed;
interstitial.OnAdFailedToShow += HandleOnAdFailedToShow;
AdRequest request = new AdRequest.Builder().Build();
interstitial.LoadAd(request);
}
public void ShowInterstitial()
{
if (interstitial.IsLoaded())
{
interstitial.Show();
}
}
private void HandleOnAdClosed(object sender, System.EventArgs args)
{
// Эта функция будет вызвана, когда реклама закрыта
Debug.Log("Реклама закрыта!");
// Уничтожаем объект рекламы после её закрытия
Destroy(interstitial);
RequestInterstitial(); // Загружаем новую рекламу
}
private void HandleOnAdFailedToShow(object sender, System.EventArgs args)
{
Debug.Log("Не удалось показать рекламное объявление.");
Destroy(interstitial);
RequestInterstitial(); // Загружаем новую рекламу
}
}
```
### Пояснение:
1. **Инициализация AdMob**: В методе `Start` вы инициализируете AdMob и запрашиваете межстраничную рекламу.
2. **Подписка на события**:
- `HandleOnAdClosed`: Этот метод вызывается, когда реклама закрыта. Здесь вы уничтожаете объект рекламы и при необходимости запрашиваете новую.
- `HandleOnAdFailedToShow`: Этот метод вызывается, если реклама не может быть показана; в этом случае также уничтожается текущая реклама и запрашивается новая.
Это позволит вам управлять ресурсами и обеспечит правильное освобождение объектов после завершения показа рекламы.