Version: 2018.4
언어: 한국어
Unity 애즈
Unity 애널리틱스

Unity 개발자 통합

개요

이 가이드는 Unity로 제작한 게임에서 Unity 애즈를 구현하는 통합 방법을 설명합니다.

  • Objective-C를 사용하는 iOS 개발자인 경우 여기를 클릭하십시오.
  • Java를 사용하는 Android 개발자인 경우 여기를 클릭하십시오.

Unity의 수익화 플랫폼은 개발자에게 매출 향상을 위한 강력한 툴을 제공합니다. 게임이 광고뿐만 아니라 인앱 구매도 사용하는 경우 Unity의 머신러닝 데이터 모델이 콘텐츠 타입을 원활하게 결합하여 최적의 수익화 전략을 구현합니다. Unity가 매출을 최적화하는 방법은 맞춤형 플레이스먼트에서 자세히 알아볼 수 있습니다.

이 가이드는 다음과 같은 내용을 다룹니다.

기본 구현

프로젝트 설정

빌드 타겟 설정

Build Settings 창에서 지원되는 플랫폼에 대한 프로젝트를 설정해야 합니다. 플랫폼을 iOS 또는 Android로 설정한 후 Switch Platform을 클릭하십시오.

Unity 에디터에서 빌드 타겟 설정
Unity 에디터에서 빌드 타겟 설정

Unity 애즈 설치

에셋 스토어에서 최신 버전의 Unity 애즈를 다운로드합니다. 수익화 API를 사용하려면 SDK 3.0 이상이 필요합니다. 에셋 패키지를 다운로드하고 설치하는 방법은 에셋 패키지 문서를 참조하십시오.

플레이스먼트 생성

플레이스먼트는 게임 내에서 트리거되는 이벤트로, 수익화 콘텐츠를 표시합니다. 개발자 대시보드Operate 탭에서 프로젝트를 선택한 후 왼쪽 탐색 표시줄에서 Monetization > Placements를 선택하여 플레이스먼트를 관리하십시오.

ADD PLACEMENT 버튼을 클릭하면 플레이스먼트 생성 프롬프트가 나타납니다. 여기서 플레이스먼트의 이름을 지정하고 타입을 선택하십시오.

  • Non-rewarded를 선택하면 기본 삽입 광고 또는 홍보 콘텐츠가 표시됩니다. 비보상형 플레이스먼트는 플레이어가 특정 시간이 지난 후 광고를 건너뛸 수 있습니다.
  • Rewarded를 선택하면 플레이어가 광고를 보는 대가로 인센티브를 받을 수 있습니다. 보상형 플레이스먼트는 플레이어들이 광고를 건너뛸 수 없습니다.
  • Banner를 선택하면 전용 배너 광고 플레이스먼트가 생성됩니다.

Unity 애즈를 지원하는 모든 프로젝트에는 기본적으로 (비보상형) ‘video’ 및 (보상형) ‘rewardedVideo’ 플레이스먼트가 포함됩니다. 이 중에서 적합한 플레이스먼트를 골라서 사용하거나, 자체 플레이스먼트를 생성할 수 있습니다.

SDK 초기화

SDK를 초기화하려면 적합한 플랫폼에 대한 프로젝트의 게임 ID를 참조해야 합니다. 게임 ID는 개발자 대시보드Operate 탭에서 왼쪽 탐색 표시줄에서 Monetization > Platforms를 선택하여 찾을 수 있습니다.

개발자 대시보드에서 게임 ID 찾기
개발자 대시보드에서 게임 ID 찾기

게임 스크립트 헤더에 UnityEngine.Monetization 네임스페이스를 포함하십시오. 게임의 런타임 라이프사이클 초기, 특히 실행 시점에 Initialize 함수를 사용하여 SDK를 초기화해야 합니다. 다음 예를 참조하십시오.

using UnityEngine.Monetization;

public class UnityAdsScript : MonoBehaviour { 

    string gameId = "1234567";
    bool testMode = true;

    void Start () {
        Monetization.Initialize (gameId, testMode);
    }
}

기본(비보상형) 광고 구현

PlacementContent는 플레이스먼트가 표시할 수 있는 수익화 콘텐츠를 나타내는 오브젝트입니다. 자세한 내용은 콘텐츠 타입맞춤형 플레이스먼트 문서를 참조하십시오. 표시할 준비가 되면 GetPlacementContent 함수를 사용하여 콘텐츠를 검색해서 가져오고 Show 함수를 사용하여 표시합니다. 다음 예를 참조하십시오.

using UnityEngine.Monetization;

public class UnityAdsPlacement : MonoBehaviour {

    public string placementId = "video";

    public void ShowAd () {
        StartCoroutine (ShowAdWhenReady ());
    }

    private IEnumerator ShowAdWhenReady () {
        while (!Monetization.IsReady (placementId)) {
            yield return new WaitForSeconds(0.25f);
        }

        ShowAdPlacementContent ad = null;
        ad = Monetization.GetPlacementContent (placementId) as ShowAdPlacementContent;

        if(ad != null) {
            ad.Show ();
        }
    }
}

이 예에서 코루틴은 IsReady 함수를 사용하여 이용 가능한 PlacementContent에 대해 전달된 플레이스먼트 ID를 확인합니다. 콘텐츠가 사용 가능하면 변수로 저장된 후 Show 함수로 실행됩니다.

보상형 광고 구현

광고를 시청하는 플레이어에게 보상을 제공하면 사용자 참여도를 높이고 매출을 늘릴 수 있습니다. 예를 들어, 플레이어에게 게임 내 재화, 소모품, 추가 생명, 경험치 멀티플라이어 등과 같은 보상을 제공할 수 있습니다. 보상형 광고를 효과적으로 디자인하는 방법은 광고 베스트 프랙티스를 참조하십시오.

광고를 시청한 플레이어에게 보상을 제공하려면 기본 구현 섹션에 설명된 것과 동일한 단계를 따르십시오. 단, 광고를 끝까지 시청한 플레이어에 대한 커스텀 로직이 포함된 보상 콜백 메서드를 사용하여 광고를 표시해야 합니다.

플레이스먼트 선택

보상형 플레이스먼트를 통해 보상형 광고를 표시해야 합니다. 또한 Unity 애즈가 지원하는 모든 프로젝트에는 기본적으로 ‘rewardedVideo’ 플레이스먼트가 포함됩니다. 이 플레이스먼트를 이용하여 광고를 구현하거나, 자체적으로 제작(플레이스먼트는 보상형으로 설정해야 함)할 수 있습니다.

스크립트에 콜백 메서드 추가


using UnityEngine.Monetization;

public class RewardedAdsPlacement : MonoBehaviour {

public string placementId = "rewardedVideo";

public void ShowAd () {
    StartCoroutine (WaitForAd ());
}

IEnumerator WaitForAd () {
    while (!Monetization.IsReady (placementId)) {
        yield return null;
    }

    ShowAdPlacementContent ad = null;
    ad = Monetization.GetPlacementContent (placementId) as ShowAdPlacementContent;

    if (ad != null) {
        ad.Show (AdFinished);
    }
}

void AdFinished (ShowResult result) {
    if (result == ShowResult.Finished) {
        // Reward the player
    }
}

} ```

보상형 광고 버튼 코드 예제

보상형 광고는 대개 버튼을 사용하여 플레이어에게 광고를 보고 보상을 받도록 표시합니다. 다음은 버튼을 눌렀을 때 광고를 표시하는 보상형 광고 버튼의 생성 방법을 설명합니다. 단, 콘텐츠가 이용 가능해야 합니다.

  1. Unity 에디터에서 Game Object > UI > Button을 선택하여 씬에 버튼을 추가합니다.
  2. 버튼을 선택한 상태로 인스펙터에서 Add Component > New Script를 클릭하여 스크립트 컴포넌트를 추가합니다. 그런 다음 스크립트 이름을 UnityAdsButton으로 지정하여 클래스 이름과 맞춥니다.
  3. 스크립트를 열고 다음 예제 코드를 추가합니다.
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Monetization;

[RequireComponent (typeof (Button))]
public class UnityAdsButton : MonoBehaviour {

    public string placementId = "rewardedVideo";
    private Button adButton;

# if UNITY_IOS
   private string gameId = "1234567";
# elif UNITY_ANDROID
    private string gameId = "7654321";
# endif

    void Start () {
        adButton = GetComponent<Button> ();
        if (adButton) {
            adButton.onClick.AddListener (ShowAd);
        }

        if (Monetization.isSupported) {
            Monetization.Initialize (gameId, true);
        }
    }
  
    void Update () {
        if (adButton) {
            adButton.interactable = Monetization.IsReady (placementId);
        }
    }

    void ShowAd () {
        ShowAdCallbacks options = new ShowAdCallbacks ();
        options.finishCallback = HandleShowResult;
        ShowAdPlacementContent ad = Monetization.GetPlacementContent (placementId) as ShowAdPlacementContent;
        ad.Show (options);
    }

    void HandleShowResult (ShowResult result) {
        if (result == ShowResult.Finished) {
            // Reward the player
        } else if (result == ShowResult.Skipped) {
            Debug.LogWarning ("The player skipped the video - DO NOT REWARD!");
        } else if (result == ShowResult.Failed) {
            Debug.LogError ("Video failed to show");
        }
    }
}

참고: 이 예제는 게임 내 특정 지점에서 PlacementContent가 표시될 준비가 되었는지 확인합니다. 다른 방법으로는 리스너를 구현하여 콘텐츠가 이용 가능할 때 알릴 수도 있습니다.

배너 광고 구현

플레이스먼트 설정

배너 광고를 사용하려면 특정 타입의 전용 배너 플레이스먼트가 필요합니다. 배너는 현재 화면 중앙 하단에 고정된 상태로 표시됩니다.

게임 내 배너 광고의 예
게임 내 배너 광고의 예

스크립트 구현

플레이스먼트 스크립트 헤더에서 Banner 클래스가 포함된 UnityEngine.Advertisement 네임스페이스를 선언하십시오. 그런 다음 SDK를 초기화하고 Advertisement.Banner.Show ()를 사용하여 배너 광고를 표시하십시오. 예를 들어 다음과 같습니다.

using System.Collections;
using UnityEngine;
using UnityEngine.Advertisements;

public class BannerAds : MonoBehaviour {

    public string bannerPlacement = "banner";
    public bool testMode = false;

# if UNITY_IOS
    public const string gameID = "1234567";
# elif UNITY_ANDROID
    public const string gameID = "1234568";
# elif UNITY_EDITOR
    public const string gameID = "1111111";
# endif

    void Start () {
        Advertisement.Initialize (gameID, testMode);
        StartCoroutine (ShowBannerWhenReady ());
    }

    IEnumerator ShowBannerWhenReady () {
        while (!Advertisement.IsReady ("banner")) {
            yield return new WaitForSeconds (0.5f);
        }
        Advertisement.Banner.Show (bannerPlacement);
    }
}

테스트

게임을 퍼블리시하기 전에 다음 단계에 따라 테스트 모드를 활성화하십시오.

  1. 개발자 대시보드Operate 탭에서 프로젝트를 선택합니다.
  2. 왼쪽 탐색 표시줄에서 Monetization > Platforms를 선택합니다.
  3. 원하는 플랫폼을 선택하고 SETTINGS 탭을 선택합니다.
  4. TEST MODE 섹션으로 스크롤을 내린 후 클라이언트 테스트 모드 오버라이드를 토글한 후 Force test mode ON 라디오 버튼을 선택합니다.

Unity 에디터에서 플레이 버튼을 클릭하여 프로젝트를 실행하고 광고 구현을 테스트합니다.

참고: 광고 통합을 테스트하기 전에 테스트 모드를 활성화해야 거짓 콘텐츠로 표시되지 않습니다.

매출 최적화

Unity 애즈를 성공적으로 구현하셨습니다! 저희는 개발자들이 매출을 효과적으로 극대화할 수 있도록 돕고자 합니다. 이를 염두에 두고 다음 단계를 따르십시오.

  • 게임이 인앱 구매(IAP)를 사용하나요?
    • 그렇다면 IAP Promo를 구현하여 인앱 상품을 홍보하십시오.
    • 아니라면 Unity IAP로 인앱 상점을 생성하십시오.
  • 광고와 IAP Promo를 설정한 후에는 맞춤형 플레이스먼트를 사용하여 광고 및 IAP 전략을 극대화하고 전체 게임의 매출을 증대하십시오.
  • 베스트 프랙티스 가이드를 검토하여 효과적인 광고 기능을 디자인하는 데 도움이 되는 인사이트를 얻으십시오.

맨 위로 이동

Unity API 레퍼런스

Monetization

Initialize

프로젝트에 대한 SDK를 초기화합니다.

public static void Initialize (string gameID, bool testMode)

gameId 파라미터는 프로젝트의 게임 ID입니다. 게임 ID는 개발자 대시보드에서 조회할 수 있습니다. testMode 파라미터는 게임이 테스트 모드인지를 표시합니다. testModetrue이면 테스트 광고만 표시됩니다. testModefalse이면 라이브 광고만 표시됩니다. 게임을 실행하기 전에 테스트 모드를 사용해야 거짓 콘텐츠로 표시되지 않습니다.

IsReady


public static boolean IsReady (string placementId); ```


<a name="getplacementcontent"></a>
#### ```GetPlacementContent```
특정 플레이스먼트에 대한 ```PlacementContent``` 오브젝트를 반환합니다.

public static PlacementContent GetPlacementContent (string placementId); ```


**참고**: ```PlacementContent```를 변수로 설정할 때는 정확한 타입([```ShowAdPlacementContent```](#showadplacementcontent) 또는 [```PromoAdPlacementContent```](#promoadplacementcontent))으로 캐스트해야 합니다. 자세한 내용은 [콘텐츠 타입](https://unityads.unity3d.com/help/monetization/content-types) 문서를 참조하십시오.

<a name="imonetizationlistener"></a>
### ```IMonetizationListener```
사용자가 구현하여 SDK로 전달하는 인터페이스입니다.

public interface IMonetizationListener {
void OnPlacementContentReady (string placementId, PlacementContent placementContent);
void OnPlacementContentStateChange (string placementId, PlacementContent placementContent, Monetization.PlacementContentState previousState, Monetization.PlacementContentState newState); } ```

OnPlacementContentReady

플레이스먼트 ID와 PlacementContent 오브젝트를 가져오고, SDK가 표시 준비를 마친 콘텐츠를 처리하는 방식을 지정합니다.

OnPlacementContentStateChange

SDK가 전달된 PlacementContent의 상태 변경을 처리하는 방식을 지정합니다.

SetListener


public static void SetListener (IMonetizationListener listener); ```

GetListener

현재 수익화 리스너를 반환합니다. 리스너 오브젝트는 이벤트 콜백에 대한 리스너입니다.

public static IMonetizationListener GetListener ();

PlacementContent

플레이스먼트가 표시할 수익화 콘텐츠를 나타내는 오브젝트입니다.

RewardablePlacementContent

PlacementContent 클래스를 확장하여 보상형 콘텐츠에 대한 확장을 제공합니다.

ShowAdPlacementContent

``RewardablePlacementContent``` 클래스를 확장하여 동영상 광고 콘텐츠에 기능을 제공합니다.

Show


public void Show (ShowAdCallbacks showAdCallbacks)

public void Show (ShowAdFinishCallback finishCallback) ```

보상형 PlacementContent의 경우에는 리스너를 사용하여 콘텐츠가 완료되었는지 확인하고 원하는 동작을 처리하십시오.

ShowAdCallbacks

광고가 실행된 후에 ShowResult 열거형이 [[ShowOptions.resultCallback]]에 전달됩니다.

설명
Finished 플레이어가 광고를 끝까지 시청했음을 의미합니다.
Skipped 플레이어가 광고를 중간에 건너뛰었음을 의미합니다.
Failed 광고가 표시되지 않았음을 의미합니다.
public delegate void ShowAdFinishCallback (ShowResult finishState);

public delegate void ShowAdStartCallback ();

public struct ShowAdCallbacks {
    public ShowAdFinishCallback finishCallback;
    public ShowAdStartCallback startCallback;
}

PromoAdPlacementContent


<a name="banner"></a>
### ```Banner```
<a name="load"></a>
#### ```Load```
배너 광고 콘텐츠를 로드하기 위한 기본 메서드입니다. 필요에 따라 몇 가지 파라미터로 이 함수를 조정할 수 있습니다.

| 메서드 | 설명 |
| ------ | ----------- |
| ```public static void Load ()``` | 기본 플레이스먼트 ID를 사용하고 콜백 없이 배너 광고를 로드합니다. |
| ```public static void Load (BannerLoadOptions options)``` | 기본 플레이스먼트 ID를 사용하여 배너 광고를 로드합니다. 로드에 성공하면 [```loadCallback```](#bannerloadoptions) 콜백을 호출하고, 로드에 실패하면 [```errorCallback```](#bannerloadoptions) 콜백을 호출합니다. |
| ```public static void Load (string placementID)``` | 특정 플레이스먼트 ID를 사용하고 콜백 없이 배너 광고를 로드합니다. |
| ```public static void Load (string placementID, BannerLoadOptions options)``` | 특정 플레이스먼트 ID를 사용하여 배너 광고를 로드합니다. 로드에 성공하면 [```loadCallback```](#bannerloadoptions) 콜백을 호출하고, 로드에 실패하면 [```errorCallback```](#bannerloadoptions) 콜백을 호출합니다. |
| ```public static bool isLoaded ()``` | 콘텐츠가 성공적으로 로드되고 표시할 준비를 마쳤는지 확인합니다. |

<a name="bannerloadoptions"></a>
##### ```BannerLoadOptions```
이 옵션을 SDK에 다시 전달하여 배너를 로드할 때 이벤트를 알립니다.

| 콜백 | 설명 |
| -------- | ----------- |
| ```public LoadCallback loadCallback { get; set; }```  | 배너 광고가 로드되고 표시할 준비가 될 때 호출합니다. |
| ```public ErrorCallback errorCallback { get; set; }``` | 배너 광고를 로드하는 중에 오류가 발생하면 이 콜백을 호출합니다. 이 콜백이 호출되면 배너가 로드되지 않았다고 간주됩니다. 나중에 로드를 다시 호출할 수도 있습니다. |

#### ```Show```
배너 광고 콘텐츠를 표시하기 위한 기본 메서드입니다. 필요에 따라 몇 가지 파라미터로 이 함수를 조정할 수 있습니다.

| 메서드 | 설명 |
| ------ | ----------- |
| ```public static void Show ()``` | 기본 플레이스먼트 ID를 사용하고 콜백 없이 배너 광고를 표시합니다. |
| ```public static void Show (BannerOptions options)``` | 기본 플레이스먼트 ID를 사용하여 배너 광고를 표시합니다. 콘텐츠가 보이면 [```showCallback```](#banneroptions) 콜백을 호출하고 콘텐츠가 보이지 않으면 [```hideCallback```](#banneroptions) 콜백을 호출합니다. |
| ```public static void Show (string placementID)``` | 특정 플레이스먼트 ID를 사용하고 콜백 없이 배너 광고를 표시합니다. |
| ```public static void Show (string placementID, BannerLoadOptions options)``` | 특정 플레이스먼트 ID를 사용하여 배너 광고를 표시합니다. 콘텐츠가 보이면 [```showCallback```](#banneroptions) 콜백을 호출하고 콘텐츠가 보이지 않으면 [```hideCallback```](#banneroptions) 콜백을 호출합니다. |

<a name="banneroptions"></a>
##### ```BannerOptions```
이 옵션을 SDK에 다시 전달하여 배너 내에서 이벤트를 알립니다.

| 콜백 | 설명 |
| -------- | ----------- |
| ```public BannerCallback showCallback { get; set; }```  | 배너 광고가 플레이어에게 표시되면 이 콜백을 호출합니다. |
| ```public BannerCallback hideCallback { get; set; }``` | 배너 광고가 플레이어에게 표시되지 않으면 이 콜백을 호출합니다. |

<a name="hide"></a>
#### ```Hide```
이 함수를 이용하면 배너 광고를 완전히 삭제하지 않고 숨길 수 있습니다.

public static void Hide (bool destroy = false); ```

맨 위로 이동


Unity 애즈
Unity 애널리틱스