読者です 読者をやめる 読者になる 読者になる

エディトリアルデザイナーのアプリ制作日記

Unityで遊ぶ個人開発者のメモ書き

Unity Adsでハマったこと

 unity 5.2以降でUnity Adsをした記事もまとめてみました。新しいバージョンのユーザーの方はそちらを参照ください。

hamazakifactory.hatenablog.com

 ※以下、Unity5.1以前の話になります。

 アプリもほぼ完成したときに、せっかくなので広告も入れたい、ということで選択したのが、Unity Ads(http://unityads.jp)。名前の通り、Unityに完全対応しているゲーム内動画広告。数行のコードを書くだけで実装が可能というふれこみもあり、まずはここからやってみようと始めてみました。 単純に広告を再生するだけなら、事前に必要なことは下記の4つだけ。

  1. Unity Adsの登録
  2. ゲームIDの取得
  3. AssetStoreからUnity Adsをインポート
  4. アプリ内で、広告再生するためのボタン&スクリプトを用意

    f:id:hamazakifactory:20150821101243j:plain

 

using UnityEngine;

using UnityEngine.UI;
using
 System.Collections;

using UnityEngine.Advertisements;

public class GameObject : MonoBehaviour {

 void Start () {
   // ゲームIDを入力して、Unity Adsを初期化する
  if (Advertisement.isSupported)
  {
  //2つ目の引数は、true=テストモードなので、アプリリリース時には、falseに設定すること

   Advertisement.Initialize ("ゲームID", true);

   }  else {
     Debug.Log("Platform not supported");
   }
 }

 //広告再生ボタンが押されたときに呼び出すメソッド

 public void ShowAd () {
   // Unity Adsを表示する準備ができているか確認する
   if (Advertisement.isReady ()) {
       Debug.Log("ShowAds");
       Advertisement.Show("rewardedVideoZone", new ShowOptions {
           pause = true,
           resultCallback = result =>
           {
               switch (result)
               {
               case ShowResult.Finished:
                   Debug.Log("The ad was successfully shown.");
                   Application.Quit();        //終了処理
                   break;
               case ShowResult.Skipped:
                   Debug.Log("The ad was skipped before reaching the end.");
                   Application.Quit();        //終了処理
                   break;
               case ShowResult.Failed:
                   Debug.LogError("The ad failed to be shown.");
                   Application.Quit();        //終了処理
                   break;
               }
           }
       } );
   }
 }

   用意したボタンに上記のスクリプトを当てるなりすれば、広告が再生されます(ただし、Unityエディタではテスト画像しか再生されないので、実際の広告はiOS・Abdroidの実機で行う必要があるのでご注意を)。

 ちなみに制作したアプリでは、ゲーム終了時に広告を再生するかどうかのボタンを用意したため、動画再生後の場合分けのところが、全部アプリ終了になってます。要は単純に広告を再生するだけなら不要なコードがいっぱいなのですが、今後必要に応じて使うんじゃないかなーということで残しておきました。

 分かってしまえば簡単ですが、やはり何事にも最初のときには、いろいろとトラブルがあるものです。実際にハマったのが初期化処理の場所。

  //2つ目の引数は、true=テストモードなので、アプリリリース時には、falseに設定すること

   Advertisement.Initialize ("ゲームID", true);

 公式サイトや最初に参考にしたサイトでは、2つ目の引数の指定がなく、制作したアプリでもゲームIDのみを渡して初期化していたところ、2回再生したところでエラーが発生(2回だけ再生できた理由は未だ謎)。以後動かないという事態になってしまいました。しばらく、エラーの原因を探るべくさまよっていた末に行き着いたのが、参考サイトにもあるアビトシアンさんのサイトでした。ちゃんと引数を設定し、無事再生できるようになってめでたしめでたし。下記の写真のようなテスト広告がちゃんと表示されるようになりました。

f:id:hamazakifactory:20150821103921j:plain

 そして最後のハマリポイントが、、、、それは、実際にリリースしてもいっこうに同じ広告が流れるだけ、、、、。当時は、そもそも2つ目の引数がどのような意味を持っているか、ちゃんと理解せずにいたため、正式にリリースしたときも引数の設定をテストモードのままにしていました。初期設定で間違えているのだから、テスト広告が流れ続けるのは当たり前です。

 原因に気づくまでテスト広告がしばらく続くというマヌケ状態でしたが、1回覚えてしまえば、大丈夫な話。次は、報酬アイテムなどを設定した広告を使ったりして、アクセスを増やしたいなぁと夢見るのでした。

 

<参考>

【Unity Ads】をさわってみた - アビトシアン

ゆにすた UNITYでゲーム製作: UnityAdsの使い方とゲームへの組み込み方