0409 - Unity 부트캠프 [3일차] 유니티 기초 강의 5주차

Hyeon O·2025년 4월 9일

Unity_BootCamp 1주차

목록 보기
3/5
post-thumbnail

📚 오늘의 학습

  • Unity 게임 개발 5 주차 강의: [게임 완성하기]

오늘은 게임을 완성하고 런칭하는데 있어서 필요한 작업들을 알아본다.

의문이 들었던 주제에 대해서 탐구하기보단,

새로운 내용이 많아 구현 과정을 차근차근 정리해볼 것이다.

  1. 스플레시 이미지를 설정하는 방법
  2. 출시를 위한 빌드 방법
  3. 광고 붙이는 방법

🧠 오늘 새롭게 배운 것 & 다시 떠올린 개념들

1. 스플레시 이미지 설정하기

스플레시 이미지란?

게임 또는 앱이 실행했을 때,

가장 처음에 나타나는 이미지나 화면을 말한다.

브랜딩에 주로 사용되고, 씬을 비동기로 로딩하여 스플래시 이미지로 로딩 시간을 숨기기도 한다.

무료 버전은 유니티 로고가 표시된다. 유로 라이선스로 제거가 가능하다.

스플레시 이미지 설정하기

설정 방법은 다음과 같다.

Edit > Project Settings > Player 로 이동한 뒤,

  • Splash Image 탭에서 다음을 설정
    • Show Splash Screen: 스플래시 이미지의 사용 여부
    • Background Color: 배경색
    • Logos: 표시할 로고 이미지 (순서 및 지속 시간 설정 가능)
    • Animation Mode: 페이드 인/아웃 같은 전환 효과


Project Settings로 가서

Player창으로 간다.

Player창 하단의 Slpash Image 영역으로 가서 설정을 진행한다.

아무 이미지를 넣지 않으면 다음과 같이 유니티 로고가 나온다.

Draw Mode에서 로고들이 어떻게 표시될지를 설정한다.

All Sequential은 로고들을 한 개씩 순서대로 보여주고,

Unity Logo Below는 둘 다 동시에 보여주되,
Unity 로고가 아래쪽에 고정되어 나온다.

2. 출시를 위한 빌드하기(안드로이드)

  1. 씬 순서 정리하기 : 게임 진행에 맞게 구현한 Scene을 순서대로 정리해야한다.

Bulid Settings →Scenes In Bulid 창에서 씬 순서 드래그 드롭으로 정리

  1. 빌드 플렛폼 선택

Bulid Settings →Platform 창에서 원하는 플랫폼 선택 후 Swthch Platform 클릭 → 게임 창 크기 재설정 필요

  1. 빌드에 필요한 세팅 설정(안드로이드 기준)

Bulid Settings → PlayerSetting

  • 회사 이름 설정
  • 앱 이름 설정
  • 버전 설정
  • Default Icon 이미지 설정
  • 아래 Settings for Android창에서 Resolution and Presectation에서 Landscape 체크 해제, 휴대폰 화면에 맞추기 위함
  • Other Setting에서 ARM64 체크해야함 → Scripting Backend 옵션을 IL2CPP로 변경 → ARM64 체크
  • Package Name 설정 : com.회사이름.개발앱
  • 배포를 위한 키 세팅하기
    Publishing Settings 옵션 설정 → KeyStore Manager 클릭 → 창이 뜨면 Keystore 클릭 → Create New → Anywhere → 프로젝트 경로에 생성 → 비밀번호 입력 → New Key Values 추가 → Add Key 클릭(아이고 복잡해)
    - Keystore란 안드로이드에서 앱을 배포할 수 있는 일종의 인증 키
  • Edit → Preferences → External Tools에 안드로이드 옵션 → 다 체크되어 있는지 확인, 안되어 있으면 모듈 설치

작성 중 빌드 에러

Project path 'C:\Users\gusdh\OneDrive\바탕 화면\Unity\FindRtan' contains non-ASCII characters at position 24, Android Tools don't work properly with non-ASCII paths. Please move your project to path containing only ASCII characters.

위 에러는 현재 프로젝트의 경로 상에 비 ASCII 문자가 포함 되어 있어서 발생한 문제다

위 로그에서 보면 프로젝트 경로에 C:\Users\gusdh\OneDrive\**바탕 화면**\Unity\FindRtan 한글이 포함되어 있어서 발생하였다.

당연하게도 경로를 바꾸거나 이름을 바꾸면 해결된다.

빌드 후 출시가 가능한 apk파일이 생성된다.

3. 광고 붙이는 방법

구현 과정

  1. Window → General → Services

  1. Advertisement Legacy Install(SDK 설치)

  1. Configure 클릭

  1. Project Settings 창이 뜨면 Services 메뉴로

설정을 확인하고, 안되어 있으면 Untiy 클라우드에 프로젝트 연결하면 설정이 자동으로 된다.

이후 스크립트를 통해서 광고를 붙일 수 있다.

그러기 위해선 몇 가지 키 값이 필요하다.

  1. Dashboard 클릭 → 유니티 클라우드 창 열림, 로그인 진행 → 이후 해당 프로젝트 대시보드로
  1. 왼쪽 창에 Unity Ads Monetization 클릭(없으면 + 눌러서 추가)

  1. 광고 활성화 클릭

  1. Unity Ads 클릭 후 다음

  1. 다음 클릭

  1. ‘내 앱이 아직 앱 스토어에 없습니다’ 체크 후 프로젝트 추가 클릭

위 과정 후에 다음과 같은 창이 보인다.

위 창의 ID는 안드로이드와 iOS출시에 필요한 ID로 필요하면 아래 ‘프로젝트 설정’ 에서 다시 확인 가능하다.

이후 왼쪽에 ‘설정 가이드’로 들어가 ‘연동 가이드’를 클릭하면

아래 Unity에서 제공하는 광고 구현을 위한 가이드 문서로 이동한다.

Unity Ads를 어떻게 적용할 수 있는지에 대한 창이 나온다

SDK(Advertisement Legacy)는 설치가 되어 있으므로(위에 2번째 과정에서 설치하였다.)

다음 과정인 Initializing the SDK in Unity, 초기화를 시켜주어야 한다.

별도의 코드를 작성할 필요 없이 가이드에 나와있는 코드를 사용해도 무방하다.

하지만 상황에 따라 가이드 코드에서 수정할 필요는 반드시 생길 것 같으니,

가이드 코드에 대해서 잘 이해하고 있으면 도움이 될 것 같다.

이제 유니티 에디터에서 광고를 붙이기 위한 작업을 진행해보자.

광고 스크립트와 빈 오브젝트(AdManager) 생성 후 스크립트를 오브젝트에 컴포넌트로 추가한다.

이후 가이드의 코드를 복사하여 스크립트에 넣어주면 된다.

그러고 나서 인스펙터 창을 보면, 다음과 같이 설정되어 있다.

아까 위에서 Unity 클라우드에서 받은 ID를 위 인스펙터 설정에 작성하면 된다.

이후 실행시켜보면

유니티 광고 초기화가 완료되었다는 로그가 나왔다.

이제 광고를 넣어보자

게임이 끝났을 경우 광고가 나오게 구현할 것이다.

가이드 문서의 Implementing rewarded ads in Unity 로 가면

버튼을 누르면 광고가 나오고 이후 리워드를 주는 로직을 구현해둔 코드가 있다.

여기서는 게임이 끝나고 버튼을 누르면 광고가 나오고,

광고가 끝나면 다시 게임을 시작하도록 구현한다.

우선 버튼에 넣을 스크립트를 하나 생성하고 위와 동일하게 가이드의 코드를 넣어준다.

이후 리워드 부분은 추가로 구현해야 하는데

게임을 재시작하도록 구현하였다.

//Grant a reward 아래에 작성하면 된다.

이후 기존 재실행하던 버튼의 컴포넌트를 삭제하고 새롭게 구성한다.

On Click() 에 새로 등록하고 실행해보면 게임이 끝난 후 광고가 재생된다.

다만

위 컴포넌트의 Test Mode 체크박스를 해제하고 출시해야 한다.

그렇지 않으면 테스트 화면이 나오게 되어 광고가 나오지 않게 된다.

정리

  1. Unity Editor 설정
  • Window → General → Services
  • Advertisement (Legacy) 설치 → Configure 클릭
  • Unity Cloud에 프로젝트 연결 필요 (자동으로 Services 설정됨)
  1. Unity Dashboard 설정
  • Dashboard 클릭 → 로그인 후 해당 프로젝트 대시보드 진입
  • 왼쪽 메뉴에서 Unity Ads Monetization 추가
  • 광고 활성화 후 앱이 스토어에 없음 체크하고 프로젝트 등록
  • 생성된 Game ID (iOS / Android) 확인 → Unity Editor 인스펙터에서 사용
  1. 광고 SDK 초기화
  • Unity Ads 가이드에서 제공하는 초기화 코드AdManager 스크립트에 적용
  • 빈 오브젝트 생성 후 스크립트 컴포넌트로 연결
  • 인스펙터에 Game ID 입력
  • Test Mode 해제 필수 (출시 시)
  1. 보상형 광고 구현
  • 게임 오버 시 표시될 광고 버튼에 스크립트 부착
  • Unity 가이드의 보상형 광고 코드 사용
  • 광고 종료 후 //Grant a reward 아래에 게임 재시작 로직 추가
    추가로 광고 붙이는 가이드 코드에 대해서 분석 및 정리해보자.

Implemening Ads Code

Implementing interstial ads in Unity : 삽입 광고 구현

using UnityEngine;
using UnityEngine.Advertisements;
// 유니티 기본 APi와 광고 관련 기능이 들어 있는 네임 스페이스

// MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener를 상속한 클래스
// MonoBehaviour를 상속하므로 유니티 컴포넌트로 사용 가능하다.
// IUnityAdsLoadListener는 광고 로딩을 위해,
// IUityAdsShowListener는 광고 표시 관련 콜백을 처리 하기 위한 인터페이스
public class InterstitialAdExample : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
{
		//직렬화 구현 - 인스펙터에 보이기 위해 : 광고 ID를 인스펙터에서 설정할 수 있음
    [SerializeField] string _androidAdUnitId = "Interstitial_Android";
    [SerializeField] string _iOsAdUnitId = "Interstitial_iOS";
    string _adUnitId;
 
		//실행 초기에 현재 플렛폼에 맞는 광고 ID를 설정하는 코드
    void Awake()
    {
        // Get the Ad Unit ID for the current platform:
        // 삼항 연산자로 구현해서
        // 현재 플렛폼이 iOS면 _iOsAdUnitId, 아니면 _androidAdUnitId를 사용
        _adUnitId = (Application.platform == RuntimePlatform.IPhonePlayer)
            ? _iOsAdUnitId
            : _androidAdUnitId;
    }
 
    // Load content to the Ad Unit:
    // 광고 콘텐츠를 미리 로드하는 함수
    // 이 작업이 되어야 ShowAd()로 광고를 실제로 보여줄 수 있다.
    public void LoadAd()
    {
        // IMPORTANT! Only load content AFTER initialization (in this example, initialization is handled in a different script).
        Debug.Log("Loading Ad: " + _adUnitId);
        Advertisement.Load(_adUnitId, this);
        // Advertisement.Load() 호출 시 this를 인자로 전달해서
        // 광고가 로드되었을 때 콜백을 받을 수 있다.
    }
 
    // Show the loaded content in the Ad Unit:
    //광고를 화면에 표시하는 함수
    public void ShowAd()
    {
        // Note that if the ad content wasn't previously loaded, this method will fail
        Debug.Log("Showing Ad: " + _adUnitId);
        Advertisement.Show(_adUnitId, this);
    }
	 
    // Implement Load Listener and Show Listener interface methods: 
    // 인터페이스 콜백 메소드로, 광고가 성골적으로 로딩되었을 때 호출된다.
    // 광고 버튼을 활성화하거나, 유저에게 광고가 준비되었다고 알려줄 때 사용
    public void OnUnityAdsAdLoaded(string adUnitId)
    {
        // Optionally execute code if the Ad Unit successfully loads content.
        // 여기에 광고로드가 성공되었을 경우에 실행할 코드를 작성한다.
    }
		 
		// 반대로 광고 로드가 실패하였을 때 실행되는 함수이다.
		// 재시도 로직을 넣거나 유저에게 광고를 사용할 수 없다고 안내할 때 사용한다.
		
    public void OnUnityAdsFailedToLoad(string _adUnitId, UnityAdsLoadError error, string message)
    {
        Debug.Log($"Error loading Ad Unit: {_adUnitId} - {error.ToString()} - {message}");
        // Optionally execute code if the Ad Unit fails to load, such as attempting to try again.
    }
	 
	 // 광고를 화면에 표시하는 도중 문제가 발생했을 때 호출
    public void OnUnityAdsShowFailure(string _adUnitId, UnityAdsShowError error, string message)
    {
        Debug.Log($"Error showing Ad Unit {_adUnitId}: {error.ToString()} - {message}");
        // Optionally execute code if the Ad Unit fails to show, such as loading another ad.
    }
	 
		// 광고가 나타나는 순간 호출
    public void OnUnityAdsShowStart(string _adUnitId) { }
    
    //유저가 광고를 클릭했을 때 호출
    public void OnUnityAdsShowClick(string _adUnitId) { }
    
    //광고 재생이 끝났을 때 호출
    // showCompletionState == UnityAdsShowCompletionState.COMPLETED → 광고 끝까지 봤을 경우.
		// showCompletionState == SKIPPED → 스킵했을 경우.
    public void OnUnityAdsShowComplete(string _adUnitId, UnityAdsShowCompletionState showCompletionState) { }
}

크게 요약하면 다음과 같다.

[1] Awake() → 플랫폼별 광고 ID 결정
[2] LoadAd() → 광고 로드 시도
    ├── 성공 → OnUnityAdsAdLoaded()
    └── 실패 → OnUnityAdsFailedToLoad()

[3] ShowAd() → 광고 표시 시도
    ├── 시작 → OnUnityAdsShowStart()
    ├── 클릭 → OnUnityAdsShowClick()
    ├── 실패 → OnUnityAdsShowFailure()
    └── 완료 → OnUnityAdsShowComplete()

Implemening rewarded Ads Code

Implementing rewarded ads in Unity : 보상형 광고 구현

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Advertisements;
 
public class RewardedAdsButton : MonoBehaviour, IUnityAdsLoadListener, IUnityAdsShowListener
{
		// 직렬화 구현 : 광고 버튼과 ID
    [SerializeField] Button _showAdButton; // 광고 버튼
    [SerializeField] string _androidAdUnitId = "Rewarded_Android";
    [SerializeField] string _iOSAdUnitId = "Rewarded_iOS";
    string _adUnitId = null; // This will remain null for unsupported platforms
 
		// 플렛폼에 맞는 광고 ID를 설정하고, 광고 버튼을 비활성화 한다.
    void Awake()
    {   
        // Get the Ad Unit ID for the current platform:
#if UNITY_IOS //는 플렛폼에 따라 컴파일 조건을 다르게 설정하는 전처리기 지기문
        _adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
        _adUnitId = _androidAdUnitId;
#endif

        // Disable the button until the ad is ready to show:
        _showAdButton.interactable = false;
         //버튼을 초기에는 비활성화시켜 광고가 준비될 때까지 누르지 못하게 한다.
    }
 
    // Call this public method when you want to get an ad ready to show.
    // 광고 로딩 시작
    // 성공적으로 로드되면 OnUnityAdsAdLoaded() 콜백으로 결과를 받는다.
    public void LoadAd()
    {
        // IMPORTANT! Only load content AFTER initialization (in this example, initialization is handled in a different script).
        Debug.Log("Loading Ad: " + _adUnitId);
        Advertisement.Load(_adUnitId, this);
    }
 
    // If the ad successfully loads, add a listener to the button and enable it:
    // 광고 로딩 성공 시 호출
    public void OnUnityAdsAdLoaded(string adUnitId)
    {
        Debug.Log("Ad Loaded: " + adUnitId);
				 //로드된 광고 ID가 광고 ID와 같다면
        if (adUnitId.Equals(_adUnitId))
        {
            // Configure the button to call the ShowAd() method when clicked:
            // 버튼을 눌렀을 때, ShowAd() 메서드가 호출되도록 클릭 리스너 구현
            _showAdButton.onClick.AddListener(ShowAd);
            // Enable the button for users to click:
            //버튼을 활성화 시켜 사용자 클릭을 허용한다.
            _showAdButton.interactable = true;
        }
    }
 
    // Implement a method to execute when the user clicks the button:
    // 유저가 광고 버튼을 눌렀을 때 광고를 실행한다.
    public void ShowAd()
    {
        // Disable the button:
        // 중복 클릭을 방지하기 위한 코드
        _showAdButton.interactable = false;
        // Then show the ad:
        //그리고 광고를 실행
        Advertisement.Show(_adUnitId, this);
    }
 
    // Implement the Show Listener's OnUnityAdsShowComplete callback method to determine if the user gets a reward:
    // 광고가 끝까지 재생되었을 대 호출
    public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState showCompletionState)
    {
		    //광고가 완료 상태 일 경우 
        if (adUnitId.Equals(_adUnitId) && showCompletionState.Equals(UnityAdsShowCompletionState.COMPLETED))
        {
            Debug.Log("Unity Ads Rewarded Ad Completed");
            // Grant a reward.
            // 보상 지급 로직을 여기에 작성한다.
        }
    }
 
    // Implement Load and Show Listener error callbacks:
    public void OnUnityAdsFailedToLoad(string adUnitId, UnityAdsLoadError error, string message)
    {
        Debug.Log($"Error loading Ad Unit {adUnitId}: {error.ToString()} - {message}");
        // Use the error details to determine whether to try to load another ad.
    }
 
    public void OnUnityAdsShowFailure(string adUnitId, UnityAdsShowError error, string message)
    {
        Debug.Log($"Error showing Ad Unit {adUnitId}: {error.ToString()} - {message}");
        // Use the error details to determine whether to try to load another ad.
    }
		
		// 광고가 실제로 표시되기 시작했을 때 호출
		// 배경음 중지, UI 잠금 등의 효과를 적용할 수 있다.
    public void OnUnityAdsShowStart(string adUnitId) { }
    
    // 유저가 광고를 클릭했을 떄 호출
    // 광고를 클릭하면 관련 사이트나 구글 플레이로 이동하게금 구현 
    public void OnUnityAdsShowClick(string adUnitId) { }
 
		// 오브젝트가 제거 될 때, 버튼에 추가된 이벤트 리스너를 제거하는 코드
    void OnDestroy()
    {
        // Clean up the button listeners:
        _showAdButton.onClick.RemoveAllListeners();
    }
}

크게 요약하면 다음과 같다.

[1] 시작 시 Awake()
     └ 플랫폼별 광고 ID 설정
     └ 버튼 비활성화

[2] 광고 로드 시도 → LoadAd()
     └ Advertisement.Load()

[3] 광고 로드 성공 → OnUnityAdsAdLoaded()
     └ 버튼 활성화 + ShowAd() 리스너 추가

[4] 유저가 버튼 클릭 → ShowAd()
     └ 광고 표시 + 버튼 비활성화

[5] 광고 종료 → OnUnityAdsShowComplete()
     └ COMPLETED일 경우 보상 지급, 아래에 보상 지급 코드 직접 구현!

[6] 종료 시 → OnDestroy()
     └ 버튼 리스너 제거

Implementing banner ads

Implementing banner ads in Unity : 배너 광고 구현

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Advertisements;
 
public class BannerAdExample : MonoBehaviour
{
    // For the purpose of this example, these buttons are for functionality testing:
    //직렬화 : 버튼
    [SerializeField] Button _loadBannerButton;
    [SerializeField] Button _showBannerButton;
    [SerializeField] Button _hideBannerButton;
 
		 //직렬화로 구현, 배너 위치 
    [SerializeField] BannerPosition _bannerPosition = BannerPosition.BOTTOM_CENTER;
 
		 //직렬화 : ID
    [SerializeField] string _androidAdUnitId = "Banner_Android";
    [SerializeField] string _iOSAdUnitId = "Banner_iOS";
    string _adUnitId = null; // This will remain null for unsupported platforms.
 
	 //시작 시 플랫폼에 맞는 광고Id를 설정하고 UI 버튼 초기 구성 상태를 구성한다.
    void Start()
    {
        // Get the Ad Unit ID for the current platform:
#if UNITY_IOS //플렛폼 별 전처리기
        _adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
        _adUnitId = _androidAdUnitId;
#endif

        // Disable the button until an ad is ready to show:
        _showBannerButton.interactable = false;
        _hideBannerButton.interactable = false;
 
        // Set the banner position:
        // 배너 광고 위치 설정
        Advertisement.Banner.SetPosition(_bannerPosition);
 
        // Configure the Load Banner button to call the LoadBanner() method when clicked:
        //버튼 클릭 리스터 등록 및 비활성화 설정
        _loadBannerButton.onClick.AddListener(LoadBanner);
        _loadBannerButton.interactable = true;
    }
 
    // Implement a method to call when the Load Banner button is clicked:
    //유저가 광고 로드 버튼을 클릭 했을 때, 광고를 로딩
    public void LoadBanner()
    {
        // Set up options to notify the SDK of load events:
        //로딩 성공/실패 콜백 지정
        BannerLoadOptions options = new BannerLoadOptions
        {
            loadCallback = OnBannerLoaded,
            errorCallback = OnBannerError
        };
				 
        // Load the Ad Unit with banner content:
        // 광고 로딩 시도
        Advertisement.Banner.Load(_adUnitId, options);
    }
		 
    // Implement code to execute when the loadCallback event triggers:
	   //광고가 성골적으로 로드 되었을 때 호출
    void OnBannerLoaded()
    {
        Debug.Log("Banner loaded");
 
        // Configure the Show Banner button to call the ShowBannerAd() method when clicked:
        // 광고 보이기 메서드 연결
        _showBannerButton.onClick.AddListener(ShowBannerAd);
        // Configure the Hide Banner button to call the HideBannerAd() method when clicked:
        // 광고 숨기기 메서드 연결
        _hideBannerButton.onClick.AddListener(HideBannerAd);
 
        // Enable both buttons:
        // 두 버튼 모두 활성화 
        _showBannerButton.interactable = true;
        _hideBannerButton.interactable = true;     
    }
 
    // Implement code to execute when the load errorCallback event triggers:
    // 배너 광고 로딩 실패 시 호출
    void OnBannerError(string message)
    {
        Debug.Log($"Banner Error: {message}");
        // Optionally execute additional code, such as attempting to load another ad.
        // 추가적으로 재시도 로직을 여기에 구현, 아니면 로드 실패 안내 문구를 구현
    }
 
    // Implement a method to call when the Show Banner button is clicked:
    // 광고 표시 버튼을 눌렀을 대 광고를 화면에 보여주는 코드
    void ShowBannerAd()
    {
        // Set up options to notify the SDK of show events:
        // BannerOption 객체에 콜백을 등록
        BannerOptions options = new BannerOptions
        {
            clickCallback = OnBannerClicked,
            hideCallback = OnBannerHidden,
            showCallback = OnBannerShown
        };
 
        // Show the loaded Banner Ad Unit:
        Advertisement.Banner.Show(_adUnitId, options);
    }
 
    // Implement a method to call when the Hide Banner button is clicked:
    // 광고 숨기기 버튼을 눌렀을 때 
    void HideBannerAd()
    {
        // Hide the banner:
        Advertisement.Banner.Hide();
    }
    
    //배너 광고의 상호작용 시 호출되는 콜백들
    void OnBannerClicked() { } //클릭 통계 집계
    void OnBannerShown() { } // 광고 노출 시간 측정
    void OnBannerHidden() { } // UI 복구
 
    void OnDestroy()
    {
        // Clean up the listeners:
        _loadBannerButton.onClick.RemoveAllListeners();
        _showBannerButton.onClick.RemoveAllListeners();
        _hideBannerButton.onClick.RemoveAllListeners();
    }
}

크게 요약하면 다음과 같다.

[1] Start()
   └ 플랫폼별 광고 ID 설정
   └ 버튼 초기화 (표시/숨기기 비활성화)
   └ 광고 위치 설정
   └ ‘로드’ 버튼 클릭 리스너 등록

[2] 유저가 '로드' 버튼 클릭 → LoadBanner()
   └ 광고 로딩 시작 (BannerLoadOptions 콜백 설정)

[3] 광고 로드 성공 → OnBannerLoaded()
   └ ‘표시’, ‘숨기기’ 버튼 클릭 리스너 등록
   └ 버튼 활성화

[4] 유저가 '표시' 버튼 클릭 → ShowBannerAd()
   └ BannerOptions 콜백 등록
   └ 광고 표시

[5] 유저가 '숨기기' 버튼 클릭 → HideBannerAd()
   └ 광고 숨기기

[6] 객체 파괴 시 → OnDestroy()
   └ 버튼 리스너 해제

광고를 구현하기 위한 가이드 문서의 코드를 분석 및 주석화를 진행하였다.

이를 통해 그 자체로 사용할 수 있겠지만,

목적과 BM구조, 기획자의 의도나 광고 종류에 맞게 확장하고 수정하는 능력이 필요할 것 같다.

특히 보상형 광고는 모바일 게임에서 주로 사용하는 점에서

코드의 흐름과 활용 능력이 있어야 할 것 같다.

💭 오늘의 회고

이번 강의는 아직 출시 경험이 없기에 거의 다 처음 듣는 이야기었다.

그래서 그런지 조금 신이 난 것 같다(?)

개인 노션페이지에

우리가 나아지면 나아질수록, 우리가 나아질 수 있는 능력 또한 더 커진다." - 더글라스 엥겔바트(Douglas Engelbart)”

라는 문구를 게임 개발 공부를 시작할 때, 크게 적어두었다.

이 때문인 것 같다. 더 알게 되었고, 더 보게 되었다.

나아진 것이 아닌 새로이 경험한 것이지만 비슷한 것 같다.

그리고 앞선 TIL에 대한 피드백을 받기 위해 매니저님을 찾아 갔고,

TIL은 트러블 슈팅(문제 해결 과정)을 중심으로 작성해보는 것이 좋다고 한다.

또한 좋은 피드백을 받아 오랜만에 뿌듯한 감정을 느낀 것 같다.

아직은 새로운 것이 많아 과정과 생각을 정리하고 있지만

앞으로 성장하면서 많은 트러블 잘 정리해보겠다는 다짐과 고민을 하며 하루를 마무리 해본다.

profile
천천히, 꾸준하게, 끝까지

0개의 댓글