Unity の広告表示
Unity のなかで手早く広告表示をするなら、Unity 公式の広告プラットフォームの「Unity Ads」が一番ラクみたいです。
そんなわけで、調べたことをメモ。
Unity Ads を紹介する記事はもうたくさんあるんですが、(基本部分はそれにお任せしつつ)実装をテストして気づいたポイントなんかを(図をいれたりして)書きました。
Unity DashBoard
Unity Ads を利用するためには、Unity DashBoard が使える必要があるので、まず使える状態にします。
で、Unity で Ads を利用する(テストする)プロジェクトを開きます。Ads を利用する上で重要なのは「Monetization」の「Placements」です。次の2つをメモします。
- GameID
- Placement ID
GameID はみたままです。Placement ID は「video」や「rewardedVideo」のことみたいです。Placement ID は最初から「video」と「rewardedVideo」の2つが登録されていました。それぞれ、どういった広告にするのかパラメーターを設定できるのがこの画面ということみたいです。
「Ad Filters」は、広告に表示しないカテゴリーや、年齢制限を設定できるみたいです。具体的にこの広告は非表示、みたいなことはできないみたいですね。
Unity で Ads を利用する手続き
ツールバーから「Build Settings」から広告表示するプラットフォームに切り替えます。Unity で(今のところ)広告表示できるのは以下のプラットフォームのどちらかです。
ツールバーから次の「Services」を選択して、インスペクターに「Services」を表示します。
Windows > General > Services
Settings
Settings を開いて、次の2つが設定されているか確認しておきます。
- PROJECT NAME
- UNITY PROJECT ID
- Unity DOCUMENTATION - Unity Services のためのプロジェクトの設定
必要があれば AGE DESIGNATION のチェックを有効にします。
有効化
Services に戻って、ADS を ON(有効化)します。ADS の設定に入るので、次を有効にします。
- Enable built-in Ads extension
- Enabled test mode
- Advanced
Advanced の「Enabled built-in Ads extension」はチェックを入れておきます。
Ads のスクリプト
Android のプラットフォーム下で Unity Ads を表示するサンプルです。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Advertisements; public class AdsController : MonoBehaviour { [SerializeField] private bool IsTestMode = false; [SerializeField] private string PlacementID = "rewardedVideo"; [Header("GameID")] [SerializeField] private int Android = 0; void Awake() { Advertisement.Initialize(Android.ToString(), IsTestMode); } public void ShowAds() { // 初期化に失敗していたら、再生しない if (!Advertisement.isInitialized) return; if (Advertisement.IsReady(PlacementID)) { // 広告表示後のオプション設定 var options = new ShowOptions { resultCallback = (result) => { switch (result) { case ShowResult.Finished: // 最後まで正常に再生 Debug.Log("The Ads was successfully shown."); break; case ShowResult.Skipped: // 途中でスキップされた Debug.Log("The Ads was skipped."); break; case ShowResult.Failed: // 再生に失敗した Debug.Log("The Ads failed to be shown."); break; } } }; Advertisement.Show(PlacementID, options); } } }
SerializeField
の属性を設定しておいたので、Ads を利用するための各種パラメーターを設定できるようにしてあります。設定しておきましょう。
補足として、Android と iOS プラットフォームに両対応する場合は、次のような感じになると思います。
#if UNITY_ANDROID Advertisement.Initialize(AndroidID); #elif UNITY_IOS Advertisement.Initialize(IosID); #endif
広告をサポートするクラス Advertisement
の初期化は Unity 5.2 以降は不要になったみたいですが、マニュアルで設定するとこんな感じかと。
ボタンを押下したら広告を流し、広告を見た報酬を与えるタイプだと ShowOptions
にコールバックするメソッドを設定しておくとよい感じになります。
動かしてみる
こんな感じで表示されました。
Android でも一応やってみました。APK ファイルを出力して、APK ファイルを直接(手動で)インストールしています。
おお。普通に広告が再生されてる。思ったよりも迷うことなくここまでこれた。
広告のよい使い方ノウハウ
どういうタイミングで表示するか、どういうようにすれば効果的かのようなものは、効率を最大化しようとすると、とても難しいのだと思いますが、基本的には次のようなことかと思います。
プライベートでゲーム開発するなら、収益化はあまり大切なことじゃないように思っていましたが、某所で今はわりと設定が簡単なんで導入しておいたほうがいい、というか、導入するコストがすごく小さいから、とりあえず設定しておくだけでも~なんだとか。
昔のゲーム開発と違ってブラウザ上の設定も結構大切みたいにも思いました。統合開発環境である Unity 内で全部のことを記述できないのですね。