using UnityEngine; #if true public class SampleAdsMgr : MonoBehaviour { public enum ADRewardType { AdAtkBuff, AdGoldBuff, AdExpBuff, } public static void ShowRewardedAd(ADRewardType adRewardType) { switch (adRewardType) { case ADRewardType.AdAtkBuff: AdBuffMgr.SOnAdBuffAttack(); break; case ADRewardType.AdGoldBuff: AdBuffMgr.SOnAdBuffGold(); break; case ADRewardType.AdExpBuff: AdBuffMgr.SOnAdBuffExp(); break; default: break; } } public static void ShowRewardedShopAd(AdsMgr.eRewardType rewtype, int irewid) { if (DataHandler.GetShop(1).buyCnt == 1) //광고제거 상품을 샀다면 바로 보상을 지급한다. { AdsMgr.SPlayRewardAds(rewtype, irewid); } else { AdsMgr.SPlayRewardAds(rewtype, irewid); } } } #else public class SampleAdsMgr : MonoBehaviour { static SampleAdsMgr curMgr; public enum ADRewardType { AdAtkBuff, AdGoldBuff, AdExpBuff, } //https://developers.google.com/admob/unity/quick-start?hl=ko 공식문서 참조 public void Start() { if (curMgr != null) { Destroy(gameObject); } else { curMgr = this; } // Initialize the Google Mobile Ads SDK. MobileAds.Initialize((InitializationStatus initStatus) =>//광고를 한번 초기화하기. 초기화는 한번만 이뤄지면 된다. { // This callback is called once the MobileAds SDK is initialized. }); LoadRewardedAd();//광고를 불러오는 부분. 광고를 실제로 틀어주기 위해서는 불러오는 작업이 선행되어야 한다. //모바일에서는 광고를 불러오기를 시작할때 불러오는속도가 다소 늦어서 게임을 시작할때 불러오도록 조정. } // These ad units are configured to always serve test ads. #if UNITY_ANDROID private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";//테스트 광고. 테스트 과정에서 테스트가 아닌 실제 광고를 넣으면 정지당할 수 있음에 주의할 것. #elif UNITY_IPHONE private string _adUnitId = "ca-app-pub-3940256099942544/1712485313"; #else private string _adUnitId = "unused"; #endif private RewardedAd _rewardedAd; /// /// Loads the rewarded ad. /// public static void LoadRewardedAd()//광고를 불러오는 부분. 광고를 틀어주는 부분과는 다르다. { // Clean up the old ad before loading a new one. if (curMgr._rewardedAd != null) { curMgr._rewardedAd.Destroy(); curMgr._rewardedAd = null; } Debug.Log("Loading the rewarded ad."); // create our request used to load the ad. var adRequest = new AdRequest(); // send the request to load the ad. RewardedAd.Load(curMgr._adUnitId, adRequest, (RewardedAd ad, LoadAdError error) => { // if error is not null, the load request failed. if (error != null || ad == null) { Debug.LogError("Rewarded ad failed to load an ad " + "with error : " + error); return; } Debug.Log("Rewarded ad loaded with response : " + ad.GetResponseInfo()); curMgr._rewardedAd = ad; }); } public static void ShowRewardedAd(ADRewardType adRewardType)//광고를 틀어주는 부분. 광고가 끝나면 보상을 얻는 코드를 여기서 작성한다. { const string rewardMsg = "Rewarded ad rewarded the user. Type: {0}, amount: {1}."; if (curMgr._rewardedAd != null && curMgr._rewardedAd.CanShowAd()) { curMgr._rewardedAd.Show((Reward reward) =>//여기서 시청이 제대로 이뤄졌다면 보상을 제공해주는 코드를 작성한다. {//시청 끝나자마자 코드를 실행하면 게임이 뻑나기 때문에 코드는 0.2초 후에 실행되도록 조정. MobileAds.RaiseAdEventsOnUnityMainThread = true; // TODO: Reward the user. Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount)); curMgr.StartCoroutine(curMgr.adRewardCor(adRewardType)); LoadRewardedAd(); }); } } IEnumerator adRewardCor(ADRewardType adRewardType) { yield return new WaitForSeconds(0.2f); switch (adRewardType) { case ADRewardType.AdAtkBuff: AdBuffMgr.SOnAdBuffAttack(); break; case ADRewardType.AdGoldBuff: AdBuffMgr.SOnAdBuffGold(); break; case ADRewardType.AdExpBuff: AdBuffMgr.SOnAdBuffExp(); break; default: break; } } public static void ShowRewardedShopAd(eRewardType rewtype, int irewid)//상점 광고품목을 샀을때. { const string rewardMsg = "Rewarded ad rewarded the user. Type: {0}, amount: {1}."; if (DataHandler.GetShop(1).buyCnt == 1)//광고제거 상품을 샀다면 바로 보상을 지급한다. { // TODO: Reward the user. //Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount)); curMgr.StartCoroutine(curMgr.adShopRewardCor(rewtype, irewid)); } else { if (curMgr._rewardedAd != null && curMgr._rewardedAd.CanShowAd()) { curMgr._rewardedAd.Show((Reward reward) =>//아니라면 광고를 틀고, 광고가 무사히 끝났을때 보상을 제공해준다. { MobileAds.RaiseAdEventsOnUnityMainThread = true; // TODO: Reward the user. Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount)); curMgr.StartCoroutine(curMgr.adShopRewardCor(rewtype, irewid));//역시 0.2 초 후에 보상이 제공된다. LoadRewardedAd(); }); } } } IEnumerator adShopRewardCor(eRewardType rewtype, int irewid) { yield return new WaitForSeconds(0.2f); AdsMgr.SPlayRewardAds(rewtype, irewid); } } #endif