using UnityEngine; using GoogleMobileAds.Api; using System; using UnityEngine.SceneManagement; public class AdManager : Singleton { private RewardedInterstitialAd rewardedInterstitialAd; private string adUnitId = "ca-app-pub-3940256099942544/5354046379"; // 테스트 광고 ID protected override void Awake() { base.Awake(); // Google Mobile Ads 초기화 MobileAds.Initialize(initStatus => { LoadRewardedInterstitialAd(); // 광고 로드 }); } protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode) { } // 보상형 전면 광고 로드 public void LoadRewardedInterstitialAd() { if (rewardedInterstitialAd != null) { rewardedInterstitialAd.Destroy(); // 기존 광고 객체 해제 rewardedInterstitialAd = null; } AdRequest request = new AdRequest(); RewardedInterstitialAd.Load(adUnitId, request, (RewardedInterstitialAd ad, LoadAdError error) => { if (error != null) { Debug.LogError("보상형 전면 광고 로드 실패: " + error); return; } rewardedInterstitialAd = ad; // 광고 종료 이벤트 설정 rewardedInterstitialAd.OnAdFullScreenContentClosed += HandleAdClosed; }); } // 보상형 전면 광고 실행 public void ShowRewardedInterstitialAd() { if (rewardedInterstitialAd != null && rewardedInterstitialAd.CanShowAd()) { rewardedInterstitialAd.Show((Reward reward) => //서버에서 500코인을 고정으로 반환하기 때문에 reward는 사용하지 않음. { // 코인 지급 로직 GrantReward(); }); } else { Debug.Log("보상형 전면 광고가 아직 로드되지 않았습니다."); } } // 광고 닫힘 이벤트 처리 private void HandleAdClosed() { LoadRewardedInterstitialAd(); // 광고가 닫힌 후 다시 로드 } // 코인 지급 함수 private void GrantReward() { NetworkManager.Instance.WatchAdForCoins((coinsAdded) => { // UI 업데이트 GameManager.Instance.panelManager.UpdateCoinsPanelUI(coinsAdded); }, () => { Debug.Log("광고 시청 후 코인 추가 실패"); }); } }