Help us understand the problem. What is going on with this article?

Unity Ads と Ad Colonyの動画SDKをUnity(C#)で一元管理したメモ(SDKだらけ〜〜w

More than 3 years have passed since last update.

1つのアプリで動画SDKを2ついれて、動画視聴の初期化やコールバックなどが大変なので、
ある程度一元化できて、簡単に実装したまとめのメモ。

環境

  • Unity5.3x
  • xcode7.2
  • OS X 10.10.5

参考にさせて頂いたサイトさま

http://yun.cup.com/wordpress/?p=72
http://qiita.com/hiroyuki7/items/ac607e3df11101b0c90a
ありがとうございます!m(_ _ *)m

Unity Ads を入れる

1. Unity Ads を Asset storeからDL

https://www.assetstore.unity3d.com/jp/#!/home
その後unityにインポートする。

2. UnityAdsの動画SDKを管理するようのsingletonスクリプトを用意

これはスクリプトをアタッチせずに自動で呼ばれるソース。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

// unity ads
using UnityEngine.Advertisements;

public class GameSceneSingleton {

    private static GameSceneSingleton mInstance;

    private GameSceneSingleton () { // Private Constructor
    }

    public static GameSceneSingleton Instance {
        get {
            if( mInstance == null ) mInstance = new GameSceneSingleton();
            return mInstance;
        }
    }

    // unity ads 初期化
    public void initUnityAds()
    {
        //プラットフォームが対応しているか判定
        if (Advertisement.isSupported)
        {
            Advertisement.allowPrecache = true;

            // ここにwifiかどうかや、1日何回まで再生等、通信トラフィックの制御をいれた方がいいかも(初期化時に通信発生

#if UNITY_IOS
            Advertisement.Initialize(Constant.SDK_UNITY_ADS_IOS_GAME_ID);
#elif UNITY_ANDROID
            Advertisement.Initialize (Constant.SDK_UNITY_ADS_IOS_GAME_ID);
#endif
        }
        else
        {
            Debug.Log("プラットフォームに対応していません。");
        }
    }

    // unity adsが視聴可能か
    public bool UnityAdsCanPlay()
    {
        //プラットフォームが対応しているかつ準備が完了している時だけtrueを返す
        return Advertisement.isSupported && Advertisement.isReady();
    }

    // 
    public void UnityAdsPlay()
    {

        if (Advertisement.isReady())
        {
            // 準備OK

            //callback用にクラスを定義
            ShowOptions showoptions = new ShowOptions();
            showoptions.pause = true;   
            showoptions.resultCallback = resAds;    //コールバック先メソッド

            //広告呼び出し
            Advertisement.Show(null, showoptions);
        }
        else
        {
            // 準備失敗
        }

    }

    // unity adsコールバック受け取り用メソッド
    public void Ads(ShowResult res)
    {
        if (res == ShowResult.Failed)
        {
            // 再生失敗
        }
        else if (res == ShowResult.Skipped)
        {
            // スキップした場合
        }
        else if (res == ShowResult.Finished)
        {
           // 再生完了

            if (gameSceneControlls)
            {
                // 指定のコールバックメソッド呼び出し。
                gameSceneControlls.unityadsVideoFinishedCallBack();
            }


        }
    }

    // unity ads のcallback用イベントリスナー (僕の場合はad colonySDKと兼用
    public GameManager gameSceneControlls;
    public void setVideoSdkCallbackListener(GameManager controller)
    {
        gameSceneControlls = controller;
    }

}

3 動画再生や、再生完了のイベントを受け取りたいソースはこんな風に。

// 〜〜〜省略

// Unity Ads 初期化
        GameSceneSingleton.Instance.initUnityAds();

// 〜〜〜省略

//再生できるか確認し、再生!
                if(GameSceneSingleton.Instance.UnityAdsCanPlay()){
                    //Sound.StopBgm(); //BGM止めるなど
                    GameSceneSingleton.Instance.UnityAdsPlay();
                }        

// 〜〜〜省略

 // unityads用callbackで呼ばれるメソッド 
    public void unityadsVideoFinishedCallBack(){

        // Sound.PlayBgm ("bgm_status"); //BGM再開等

    } 

// 〜〜〜省略



※adcolonyも同様に設定するだけですが、、追って記述追加します!
参考になれば幸いです!!!!!!!!

matsuyoro
げーむくりえいたー。 顔は濃いが存在の薄さに悩んでいる。 書籍「仕事はたのしいかね」の、大きな事でも試してみればの精神に感銘を受けている。 好きな言葉:好きこそものの上手なれ / 楽は苦の種、苦は楽の種
https://matsudapress.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away