UnityAdsの実装テスト
UnityAdsについて
UnityAdsはUnityが提供する動画広告の仕組み、またその機能のことを指す。 Unityのゲームをプレイ中に動画視聴でゲーム内通貨プレゼントなどというものを見たことないだろうか?主にそういう実装で使用されているためユーザーへの不快感は少ない。
table:項目 概要
種類 動画(30秒)
収益 CPI型(Install数×広告主の設定価格)
不快感 少なめ
実装コスト 少なめ
提供 Unity
30秒の動画を視聴させユーザーが興味を持ちストアからダウンロードすればInstall数に応じた広告主の設定価格が収益として手に入る仕組み。
Unityが提供しているためUnityでの動作の安定性はもちろん実装コストも最低限までに短縮されている。
実装コストとユーザーへの不快感は少ないため実装することに対してのデメリットはない。。
また、クリックが収益になるバナー広告などとも共存は可能。
UnityAdsダッシュボードの設定
上の公式ページからUnityのデベロッパーアカウントを使ってログインができる。
また、新規作成もできるので持ってない人でもここで作成可能。
https://gyazo.com/37accf0d4a0a7a94b35da6610a1f00f8 https://gyazo.com/e2c77c25caf1226f1a4c037926116061
アカウント認証後に広告を出すアプリ情報やユーザー情報などを聞かれる場合がありますがあとから変更や削除可能です。またアプリ情報は最新版であればUnityから自動生成ができます。
ログインが完了するとAdminのページになる。左は日本版サイト、右は海外用サイトだ。
広告の導入や収益の確認はコインが重なっている方を、広告を配布してユーザー獲得する場合は人型のボタンを押してください。
ここでは広告の出し方に関しては記載しません。
https://gyazo.com/bf4355691226bbc8e5a039078a63b2ad
広告を掲載しているアプリのダッシュボードです。
画像はログイン時にアプリ情報の入力があったためすでにプロジェクトが追加されています。
新しいプロジェクトのボタンからいつでも追加できます。
https://gyazo.com/224b51dc9673bc7493f0c4645d00ae05
プロジェクトの追加画面の入力内容です。プロジェクトをサイトから追加する場合に使用します。
しかし、最新版のUnityでは自動生成されるため不要なので飛ばして結構です。
画面下の13歳以下を対象にしているかのチェックを入れるとおそらく過激な表現(戦争,暴力など?)の動画などは表示されなくなります。もし、過激な表現の動画が表示OKでもアメリカ合衆国13歳以下の児童を対象にしている場合はチェックをつけましょう。
https://gyazo.com/01823fa8fd53b92d139c907a4b972b23
以上で完了です。これだけ?って感じですね。
Unity5.1以前の場合はAsset StoreよりUnityAdsのAssetの追加と、作成したプロジェクトごとのIDなどが必要になるようですが....それより新しいバージョンだとサイトでプロジェクトを作成するだけになります。
最新版でAssetを追加するとデフォルトで入っているため競合しエラーが発生します。
UnityAdsサンプル用のプロジェクトの作成
UnityAdsを有効にするためにUnityを起動してのプロジェクトを開きましょう。
プロジェクト名は先ほどサイトで追加したAdsTestです。
ProjectのタブはSceneとScriptのみです。
UnityAdsの実装処理を書くためのUnityAdsScript.csを用意しました。
https://gyazo.com/c74da6799af535eca8b2e46ff287db32
Awakeメソッドの中身は公式の実装方法にはなかったですが追加することで動作するようになりました。
GameIDの部分は置き換えますが次のUnityAdsの有効化で説明します。
code:UnityAdsScript.cs
using UnityEngine;
using UnityEngine.Advertisements;
public class UnityAdsScript : MonoBehaviour
{
public UnityEngine.UI.Text CountText;
private int count = 0;
void Awake()
{
// まずはAwake()内で、初期化をします。先ほどのゲームIDを入力。
Advertisement.Initialize ("【GameID】");
}
public void ShowRewardedAd()
{
if (Advertisement.IsReady("rewardedVideo"))
{
var options = new ShowOptions { resultCallback = HandleShowResult };
Advertisement.Show("rewardedVideo", options);
}
}
private void HandleShowResult(ShowResult result)
{
switch (result)
{
case ShowResult.Finished:
Debug.Log ("The ad was successfully shown.");
//
// YOUR CODE TO REWARD THE GAMER
// Give coins etc.
count++;
CountText.text = "視聴回数:" + count;
break;
case ShowResult.Skipped:
Debug.Log("The ad was skipped before reaching the end.");
break;
case ShowResult.Failed:
Debug.LogError("The ad failed to be shown.");
break;
}
}
}
HierarchyはCanvasを使用し、Textを2つとButtonを配置。Buttonを押すと動画広告を表示にします。
どこでも大丈夫ですがCanvasにUnityAdsScript.csを追加して、CountTextとHierarchyのCountTextを紐付けます。これによって動画広告が視聴完了して閉じられた時にCountTextに表示している視聴回数をカウントします。
Buttonが押された時UnityAdsScript.csのShowRewardedAd()が呼ばれるように設定します。
https://gyazo.com/c48d451e6986c75e6e8516df61f85ed2
Sceneが完成しました。
Buttonの文字は「動画広告を表示」に変更。
CountTextは「視聴回数:0」に変更。
DetailTextは「↑これがポイント付与要素になる」に変更しました。
https://gyazo.com/7e319ea4fa1c905d3d496eed48bb86c5
UnityAdsの有効化
UnityのWindowからServicesを選択してServicesのタブを表示します。
最初にログインを求められることがありますがUnityAdsのサイトのアカウントでログインしてください。
ログインするとサイトにプロジェクトが自動で追加されます。その際設定が必要なIDなども自動で入力してくれています。
サイトで行った13歳以下対象のチェックやプロジェクト名、プロジェクトIDの変更などはSERVICESのところを押すと変更可能です。サイトで作成したプロジェクトを使う場合はプロジェクトIDを変更してください。
今回はAdsを有効にするためAdsを選択しましょう。
https://gyazo.com/9a07d6f254fdd66faae1351d32397786
デフォルトでは上のスイッチがOFFになってますのでONにしてください。ONで下の項目も表示されます。
GameIDの部分は自動で生成されます。こちらもサイトで作成したプロジェクトを使う場合、置き換えてください。GameIDをUnityAdsScript.csのAwakeメソッドでの初期化に使いますので置き換えてください。
https://gyazo.com/006e80e4cea25e9df188f97972eceee3
実行結果
UnityEditorでもエラーになったりはしないが非対応のような専用画面が表示される。
Closeを押すことで動画視聴完了のコールバックが呼ばれ画面を閉じることができる。
https://gyazo.com/a1030fa5634bfc20e10a27b440c0f490
実機ではこんな感じ
動画再生中
https://gyazo.com/77055fca50b36cb212a386afa22fe541
動画再生終了
https://gyazo.com/d1ead3cd2ee82e3b195e4e9a3aed5309
コールバックが無事に呼ばれたので視聴回数が1回になった。
https://gyazo.com/37b7e4e0f5e99956b68f6ad2e898b442