81 lines
2.3 KiB
C#
81 lines
2.3 KiB
C#
using UnityEngine;
|
|
using GoogleMobileAds.Api;
|
|
using System;
|
|
|
|
public class AdManager : MonoBehaviour
|
|
{
|
|
private RewardedInterstitialAd rewardedInterstitialAd;
|
|
private string adUnitId = "ca-app-pub-3940256099942544/5354046379"; // 테스트 광고 ID
|
|
|
|
void Start()
|
|
{
|
|
// Google Mobile Ads 초기화
|
|
MobileAds.Initialize(initStatus => { });
|
|
|
|
// 광고 로드
|
|
LoadRewardedInterstitialAd();
|
|
}
|
|
|
|
// 보상형 전면 광고 로드
|
|
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("광고 시청 후 코인 추가 실패");
|
|
});
|
|
}
|
|
} |