using UnityEngine; using UnityEngine.Advertisements; public class InterstitialAdsManager : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener { #if UNITY_ANDROID private string adUnitId = "Interstitial1"; #elif UNITY_IOS private string adUnitId = "Interstitial_iOS"; #else private string adUnitId = "Interstitial1"; #endif public static InterstitialAdsManager Instance; public int runCount = 0; public int showEveryXRuns = 3; void Awake() { if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } } void Start() { LoadAd(); } // 🔄 Call this after each death public void OnRunEnded() { runCount++; if (runCount >= showEveryXRuns) { ShowAd(); runCount = 0; } } // 📥 Load public void LoadAd() { Advertisement.Load(adUnitId, this); } public void ShowAd() { if (Advertisement.isInitialized && Advertisement.isSupported) { Advertisement.Show(adUnitId, this); } else { Debug.Log("Ad not ready"); } } // ===== Callbacks ===== public void OnUnityAdsAdLoaded(string adUnitId) { Debug.Log("Interstitial Loaded"); } public void OnUnityAdsFailedToLoad(string adUnitId, UnityAdsLoadError error, string message) { Debug.Log("Load Failed: " + message); } public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState state) { Debug.Log("Interstitial Closed"); LoadAd(); // 🔁 reload next } public void OnUnityAdsShowFailure(string adUnitId, UnityAdsShowError error, string message) { Debug.Log("Show Failed: " + message); } public void OnUnityAdsShowStart(string adUnitId) { } public void OnUnityAdsShowClick(string adUnitId) { } }