Unity製のモバイルアプリに動画広告を導入する 〜Unity Ads 超入門〜
はじめに
ハイパーカジュアルというジャンルが台頭してきた昨今、モバイルアプリの中で動画広告を見るのはそう珍しくない時代になりました。そんな中、自分のアプリにも動画広告を入れたい、という声もSNSなどで見かけます。しかし、やり方をググってみても記事が古くてうまくいかなかったり、手順通りにやったはずなのにトラブルが発生し挫折してしまうことはよくあります。
この記事では、Unity製のアプリに広告を導入してマネタイズができるようになる方法をできるだけ丁寧にお伝えします。せっかく時間をかけてアプリを作ったのですから、遊んでくれるユーザーの時間をほんの少しいただいて、おこづかいを稼げるようにしましょう。
対象
Unityでモバイルアプリを作ったので広告を入れてみたい方
広告の実装をやったことはあるけどうまくいかなかった方
あまりプログラム(C#)に自信がない方
Unity Ads導入までの流れ
まずはこれからやることを整理しましょう。流れはとてもシンプルです。
1. Unity Ads SDKをUnityプロジェクトにインポートする
2. スクリプトでUnity Adsを初期化し、広告を表示する
言うは易く行うは難し、という言葉がある通り、一筋縄ではいかないこともあります。導入における注意点などは適宜よくあるつまづきポイントとして紹介していきます。
Game IDを発行する
広告を表示するためには、Game IDが必要になります。発行するためには、以下のいずれか一つの手順を踏んでください。
a. UnityエディタのServicesウィンドウからAdsをONにする
Unityエディタ右上の雲のマークを押してServicesウィンドウを開き、AdsをONにします。
b. Unityダッシュボードからゲームを作成する
Unityダッシュボードで新しくプロジェクトを作成して選択後、メニューからMonetizationを見に行って「Enable Ads」を押すとGame IDが発行されます。
発行されたGame IDは、Unityダッシュボードから確認できます。同時に、Placementという広告枠も作成されます。デフォルトで「video」と「rewardedVideo」というPlacementができています。
Unity Ads SDKのインポート
Unity Ads SDKはいろんなところからダウンロードできます。GitHubとかアセットストアとか。最もおすすめの方法は、Package Manager経由でのインポートです。メニューの「Window > Package Manager」からウィンドウを開き、検索バーに「adv」まで入力すると、Unity Adsのパッケージ「Advertisement」を見つけることができます。ここから最新版をInstallしましょう。
古いバージョンのUnityを使っていてPackage Managerが利用できない場合は、アセットストアからインポートしましょう。
よくあるつまづきポイント
以前のバージョンでは、ServicesウィンドウからUnity AdsをONにするとビルトインのUnity Ads SDKが自動的に入る仕組みになっていました。インポート後にエラーが出たり、スクリプトエディタでUnity Adsの関数が使えなかったり、これが気になる人はビルトインのAdsを使わないように設定を変えましょう。
Unity Adsの初期化(Initialize)
Unity Adsで広告を表示するには、表示の前に初期化を完了させておく必要があります。この初期化処理には通信環境に拠りますが、実機で数秒〜十数秒かかることがあります。ですので、この処理は広告表示直前ではなく、アプリ起動時などに済ませておくのがベターです。
新しくC#スクリプトを作成し、Start関数内に初期化処理を記述します。コードは次の1行です。
using UnityEngine;
using UnityEngine.Advertisements;
public class UnityAdsSample : MonoBehaviour
{
void Start()
{
Advertisement.Initialize("ここにGame ID");
}
}
Initialize関数の引数にGame IDを渡します。ここで思い出さなければいけないのは、iOSとAndroidでGame IDが違うということです。よって、プラットフォームのディレクティブを使ってそれぞれのGame IDが使われるように変更します。
using UnityEngine;
using UnityEngine.Advertisements;
public class UnityAdsSample : MonoBehaviour
{
private string _gameId;
void Start()
{
#if UNITY_IOS
_gameId = "ここにiOS用のGame ID";
#elif UNITY_ANDROID
_gameId = "ここにAndroid用のGame ID";
#endif
Advertisement.Initialize(_gameId);
}
}
Unity Adsの表示(Show)
次に、表示用のpublicメソッドを用意します。このメソッドの中では、まず「広告表示が可能かどうか」を見て、OKなら広告を表示します。この判定はIsReady関数で行います。
using UnityEngine;
using UnityEngine.Advertisements;
public class UnityAdsSample : MonoBehaviour
{
private string _gameId;
void Start()
{
#if UNITY_IOS
_gameId = "ここにiOS用のGame ID";
#elif UNITY_ANDROID
_gameId = "ここにAndroid用のGame ID";
#endif
Advertisement.Initialize(_gameId);
}
public void ShowUnityAds()
{
if (Advertisement.IsReady())
{
Advertisement.Show();
}
}
void OnGUI()
{
if (GUILayout.Button("Call ShowUnityAds()"))
{
ShowUnityAds();
}
}
}
これで、ShowUnityAds関数を呼び出したときに「広告が表示可能」であれば、広告が表示されます。下のOnGUI()はテスト用に用意したボタンです。UnityエディタでPlay時にボタンが表示され、ボタンを押すと広告(ダミー)が表示されます。
よくあるつまづきポイント
PlayしてもGUIボタンが表示されない
- GameビューのScaleが拡大されていませんか?
- シーン内のGameObjectにスクリプトがくっついていますか?
GUIボタンを押しても何も起きない
- ビルドターゲットがiOS/Android以外になっていませんか?
- Game IDは正しい値になっていますか?
- iOSとAndroidのGame IDが逆に入っていませんか?
おわりに
Unity Ads 超入門ということで、広告を表示するまでの最短ステップを紹介しました。実際にアプリに組み込んだり広告の運用を考えると、物足りなくなることがあると思います。次回は入門編ということで、リワード広告の実装について書きたいと思います。