[ 개발 일기 ] Drop The Chicken 모바일 출시 작업 - 광고 좀 넣자(완)

2024. 9. 9. 16:00게임 개발/개발 일기

https://rivermountain.tistory.com/153

모바일 빌드에 성공했다.

 

이후 광고를 넣기 위한 작업을 진행 후

폰으로 옮겨서 실행했는데

 

해상도 조절 기능이 잘 작동되지 않았다.

+ 광고도 작동되지 않았음.

 

 

[ ChickenFly 리메이크 ] 모바일 해상도 고정 기능 개발

모든 모바일 폰에서도 이상하지 않게 게임이 진행되도록 하기 위해 방법을 찾아보던 도중모바일 해상도를 16:9로 고정하는 것이 좋아보여서 기능을 개발하기로 했다.  개발 과정유튜브를 뒤적

rivermountain.tistory.com

해당 코드와 구조가 같은데 왜 여기서는 실행되지 않는 것일까

레터박스, 광고 둘 다 에디터에서는 잘 실행되었다.

 

왜 빌드본에서는 실행되지 않는 것일까?

일단 치킨 플라이와 설정을 비슷하게 하니 일부 수정되었다.

 

하지만 아직도 뭔가 이상해서 Chat gpt한테 물어봤다.

최근에 모바일 버그를 해결하기 위해 챗 지피티를 사용하면서 챗 지피티에 빠진 것 같다.

 

두세번 정도 물어보니 해결되었다.

하지만 광고가 재생되지 않았다. 흠..

 

사실 구글 애드몹 광고 예제랑은 코드가 좀 많이 다르긴 했었다.

내 코드

https://developers.google.com/admob/unity/rewarded/legacy?hl=ko

링크를 보면 공식 코드가 나온다.

 

흠.. 분명 디버그 모드에서는 잘 실행이 되는데 무엇이 문제일까?

결국 나는 또 챗지피티의 도움을 받았다.

 

이번에는 5~6번 정도의 질문 및 빌드 후

광고가!! 재생이!! 된다고!!

우와아아악!!!

 

using GoogleMobileAds.Api;
using System;
using UnityEngine;

public class AdManager : MonoBehaviour
{
    public static AdManager Instance { get; private set; }

    private string _adUnitId = "ca-app-pub-3940256099942544/5224354917";


    private RewardedAd _rewardedAd;

    public void Start()
    {
        if (Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
            return;
        }

        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) => { });

        LoadAd();
    }

    public void ShowRewardedAd()
    {
        if (_rewardedAd != null && _rewardedAd.IsLoaded())
        {
            _rewardedAd.Show();
            _rewardedAd.Destroy();
            LoadAd(); // 광고 재로드
        }
        else
        {
            Debug.Log("Rewarded ad is not loaded yet.");
        }
    }

    private void LoadAd()
    {
        // Clean up the old ad before loading a new one.
        if (_rewardedAd != null)
        {
            _rewardedAd.Destroy();
            _rewardedAd = null;
        }

        Debug.Log("Loading the rewarded ad.");

        // Create our request used to load the ad.
        var adRequest = new AdRequest.Builder().Build();
        _rewardedAd = new RewardedAd(_adUnitId);

        // Load the ad with a callback
        _rewardedAd.LoadAd(adRequest);

        // Subscribe to ad events
        _rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        _rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
        _rewardedAd.OnAdClosed += HandleRewardedAdClosed;
    }

    private void HandleRewardedAdLoaded(object sender, EventArgs args)
    {
        Debug.Log("Rewarded ad loaded successfully.");
    }

    private void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        Debug.LogError("Failed to load rewarded ad: " + args.ToString());
    }

    private void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        Debug.Log("Rewarded ad closed. Reloading...");
        LoadAd(); // 광고 종료 후 재로드
    }
}