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


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

### 環境
- 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スクリプトを用意


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

```csharp

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かどうかや、１日何回まで再生等、通信トラフィックの制御をいれた方がいいかも（初期化時に通信発生

#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 動画再生や、再生完了のイベントを受け取りたいソースはこんな風に。

```csharp

// 〜〜〜省略

// 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も同様に設定するだけですが、、追って記述追加します！
参考になれば幸いです！！！！！！！！