왜 Unity Ads?
수업에 쓰이는 콘텐츠만 출시하다 보니
수익화를 위한 광고를 넣을 필요가 없어 광고 구현을 한 번도 해본 적이 없었다.
Certified Professional Test에 광고 구현과 관련된 문제가 2~3문제가 나왔었다.
전혀 몰라서 아마 틀렸을 것인데..다시 도전하기 위해 우선 Unity Ads에 대해 알아보기로 한다.
ChatGpt에게 물어보니 Unity 게임 엔진과의 통합을 우선적으로 고려한다면 Unity Ads를,
Google의 광고 네트워크와 연동하여 광고 수익을 최적화하고 싶다면 AdMob을,
또는 세밀한 타겟팅 옵션과 가치 제공 방법을 중시한다면 AppLovin을 선택할 수 있다고 한다.
즉 수익을 우선시한다면 AdMob이 낫다는 것이다.
유니티 공식 튜토리얼에 따라만 해도 될 정도로 상세히 나와있는데, 굉장히 쉬웠다. 이 글은 이 튜토리얼의 과정을 좀 더 심플하게 적어두고 다음에 써먹을 일이 있을 때 보기 위한 기록이다.
유니티 에디터에서 준비
1. 조직 생성(유니티 홈페이지 내 계정에서 생성)
2. 프로젝트 메뉴 - Window - General - Service 클릭
3. Ads On
4. 해당 프로젝트의 조직을 선택한 다음 프로젝트 ID 만들기 선택
5. Ads 패키지는 최신버전으로 설치 (Current Version 과 Latest Version Available이 일치하는지 확인)
6. 출시하기 전에는 Enable Test mode를 체크하자.
개발 중 이것을 체크하지 않고 실제 광고를 시청하면 계정이 사기로 신고될 수 있다고 한다.
유니티 게이밍 서비스 대시보드에서 준비
1. 유니티 게이밍 서비스 이동
2. 사이드메뉴에서 수익화 메뉴 선택
3. 수익화할 프로젝트 선택
4. Complete Activation 선택
5. Mediation 사용하지 않고 Unity Ads만 사용(이 튜토리얼에서는 우선 이렇게 진행한다.)
6. 수익화 메뉴 - 광고 유닛 메뉴 선택
7. 화면에 나오는 게임 ID 기록(유니티 에디터에서 프로젝트의 고유 게임 ID와 같다.)
8. Interstitial_Android, Rewarded_Android, Banner_Android 와 같은 세 가지 형태의 광고가 있는데,
각 광고를 클릭하여 스킵시간이나 음소거 여부 등을 세팅할 수 있다.
AdDisplay 스크립트 작성
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Advertisements;
public class AdDisplay : MonoBehaviour
{
public string myGameIdAndroid = "YOUR_GAME_ID_HERE";
public string myGameIdIOS = "YOUR_GAME_ID_HERE";
public string adUnitIdAndroid = "Interstitial_Android";
public string adUnitIdIOS = "Interstitial_iOS";
public string myAdUnitId;
public bool adStarted;
private bool testMode = true;
// Start is called before the first frame update
void Start()
{
#if UNITY_IOS
Advertisement.Initialize(myGameIdIOS, testMode);
myAdUnitId = adUnitIdIOS;
#else -> 실제 출시되는 앱인 경우 else if UNITY_ANDROID라고 해주어야 한다. else만 되어있으면 에디터 상태에서도 광고가 나오므로 우선은 테스트를 위해 else라고 함
Advertisement.Initialize(myGameIdAndroid, testMode);
myAdUnitId = adUnitIdAndroid;
#endif
}
// Update is called once per frame
void Update()
{
if (Advertisement.isInitialized && !adStarted)
{
Advertisement.Load(myAdUnitId);
Advertisement.Show(myAdUnitId);
adStarted = true;
}
}