UnityAds
環境
Unity 5.3.4
概要
UnityAdsはUnityが提供してくれている広告用機能で、簡単に広告導入を実装することができます。
動画広告を見てアプリをインストールしてもらうと報酬が発生します。
また、動画を最後まで見たかどうかを判定できるので、
きちんと最後まで見てくれたユーザーにアイテムなどの付与をすることもできるので
ユーザーが広告を見ても損をしないシステムを構築することが可能です。
導入方法
導入はUnityのService設定でAdsをONにするだけで導入できます。
Service表示
Serviceは上段メニューのWindow => Serviceで表示されます。
Ads設定
Ads画面へ
Service画面では様々な機能の有効、無効の表示がされています。
この中からAdsの状態ボタン(ON or OFF)をクリックすることでAds画面に遷移します。
有効、無効設定
Ads画面では設定状態やサンプルコード、ドキュメントの確認、編集ができます。
有効、無効の設定は画面上部にあるトグルボタンで行います。
画面説明
①.項目
表示項目の切り替えができます。
「SETTINGS」「CODE SAMPLES」「DOCS」を選択できます。
・SETTINGS
設定確認、編集ページです。
・CODE SAMPLES
Adsのサンプルコードのページです。
・DOCS
ドキュメントページです。
②.Pratform
このAdsで使用するプラットフォームを選択できます。
iPhoneとAndroidで設定可能です。
③.TestMode
広告をテストモードで実行するかどうかの設定です。
④.Advanced
アプリのプラットフォーム毎に設定されている
GameIDが表示されています。
⑤.Supported Platforms
この機能で使用できるプラットフォームの種類が表示されています。
使用方法
必要なクラス
UnityAdsには「UnityEngine.Advertisements」が必要です。
例:
using UnityEngine.Advertisements;
初期化
この初期化メソッドはUnityバージョン5.2以降では呼び出す
必要はありませんが、一応説明をしておきます。
Initializeは広告機能を初期化するメソッドで、
ゲーム中に1度すれば大丈夫なので起動時と同時に呼び出します。
Initializeメソッド仕様
メソッド名:
Initialize
引数:
int GameID
今回初期化するGameID
bool test_mode
テストモードのON、OFF
(デフォルト引数)
内容:
指定したGameIDでAdvertisementを初期化します。
テスト中はtest_modeをtrueにして実行するようにします。
※test_modeの設定はAdsの設定が優先されます。
具体例:
Advertisement.Initialize(11111, true);
使用可否判定
初期化が無事終了して広告が使用可能かどうかの判断は
IsReadyメソッドを使用します。
IsReadyメソッド仕様
メソッド名:
IsReady
引数:
string zoneId
広告の種類
(デフォルト引数)
内容:
広告が使用可能かどうかの判定をします。
引数にzoneIdを指定した場合は指定したIDの
広告使用可能かの判断が行われ、
引数指定なしの場合デフォルトのzoneIdが使用されます。
具体例:
if (Advertisement.IsReady())
{
Debug.Log("使用可能");
}
無限ループ
IsReadyが失敗した場合に再度IsReadyを呼び出すことがありますが、
通信障害で機能しない場合、ループし続けることになります。
なので失敗の回数や秒数経過で再生をあきらめるような
処理を実装しておいたほうが安全です。
再生
広告を再生するにはShowメソッドを使用します。
Showメソッド仕様
メソッド名:
Show
引数:
string sozeId
広告で実行するzoneId
(デフォルト引数)
ShowOptions options
終了時のコールバック処理をメソッドを
設定できるクラス
(デフォルト引数)
内容:
指定した広告の再生を行います。
もし、終了時にユーザーに報酬を与えるなら
ShowOptionsにコールバックメソッドを指定すると
終了時に呼び出されるので、その際に報酬を
付与できます。
具体例:
if (Advertisement.IsReady("rewardedVideoZone"))
{
ShowOptions options = new ShowOptions
{
resultCallback = Result
};
Advertisement.Show("rewardedVideoZone", options);
}
private void Result(ShowResult result)
{
switch (result)
{
case ShowResult.Finished:
Debug.Log("広告表示成功");
// ここで報酬をユーザーに付与する
break;
case ShowResult.Skipped:
Debug.Log("スキップされました");
break;
case ShowResult.Failed:
Debug.LogError("失敗しました。");
break;
}
}
報酬付与
広告をきちんと再生したユーザーに対して報酬を付与したい場合は
Showの説明で書いていますが、ShowOptionsクラスを使用して
広告表示結果を取得します。
ShowOptionsにはresultCallbackというメンバ有り、
ここにコールバックメソッドを指定すると
広告再生終了後に再生結果を通知してくれます。
resultCallback
戻り値なし、引数にShowResult型の変数を持つ
メソッドを渡すことで再生終了後、
どのような形で再生が終了したかを通知してくれます。
具体例:
// 戻り値:なし
// 引数:ShowResult result
private void Result(ShowResult result)
{
}
ShowResult
ShowResultは「Finished」「Skipped」「Failed」があり、
各状態で処理を分岐させます。
・Finished
再生が無事終了した場合に渡される値です。
この値が帰ってきたらユーザーに報酬を与えます。
・Skipped
再生をスキップした場合に渡される値です。
スキップしているので何もしないことが多いです。
・Failed
再生が失敗した場合に渡される値です。