こんばんは。河条です。^o^
アドフリくん動画リワードにめっちゃ時間かかった。。。
実機テストまでは公式サイトのマニュアルみればなんとかなったけど、いざスクリプト入れて動画リワード再生しようと思っても、なかなかうまくいかなくて割と同じ現象になってる方をツイッター等で見たので、ここにまとめ!
御託は置いといて、とりあえず結論のソースコードじゃ!!
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;
//ボタン押下時、動画リワードが流れ、再生完了後にゲーム内アイテムを増やす
public class Moviepop : MonoBehaviour {
//動画リワード再生後に値を増やす
private int test_num;
//動画リワードの状態を格納
private SCENE_STATE sceneState = SCENE_STATE.MAIN;
//動画リワード用bool変数
bool initialized=false;
//動画リワードの状態を定義
enum SCENE_STATE {
MAIN,
QUIT_WAIT,
QUIT,
END
}
// Update関数
void Update ()
{
//動画リワードの初期化
if (!initialized)
{
initialized = true;
GameObject ob = GameObject.Find(“AdfurikunMovieRewardUtility“);
AdfurikunMovieRewardUtility au = ob.GetComponent<AdfurikunMovieRewardUtility>();
au.setMovieRewardSrcObject(this.gameObject);
}
//動画リワードの状態をチェックする
switch (this.sceneState) {
case SCENE_STATE.MAIN:
break;
case SCENE_STATE.QUIT_WAIT:
this.sceneState = SCENE_STATE.QUIT;
break;
case SCENE_STATE.QUIT:
this.sceneState = SCENE_STATE.END;
break;
case SCENE_STATE.END:
break;
}
}
//広告動画を再生させるボタン
public void PushAdsense ()
{
GameObject ob = GameObject.Find(“AdfurikunMovieRewardUtility“);
AdfurikunMovieRewardUtility au = ob.GetComponent<AdfurikunMovieRewardUtility>();
au.playMovieReward ();
}
//コールバック関数(ここはアドブリくんのリファレンス丸コピでおk)
void MovieRewardCallback(ArrayList vars) { int stateName = (int)vars[0];
string appID = (string)vars[1];
string adnetworkKey = (string)vars[2];
AdfurikunMovieRewardUtility.ADF_MovieStatus state = (AdfurikunMovieRewardUtility.ADF_MovieStatus)stateName; switch (state) {
case AdfurikunMovieRewardUtility.ADF_MovieStatus.PrepareSuccess:
//“準備完了“
break;
case AdfurikunMovieRewardUtility.ADF_MovieStatus.StartPlaying:
//“再生開始“
break;
case AdfurikunMovieRewardUtility.ADF_MovieStatus.FinishedPlaying:
//“再生完了” ここで増やしたいゲーム内アイテムを記述する
test_num += 1;
PlayerPrefs.Save ();
break;
case AdfurikunMovieRewardUtility.ADF_MovieStatus.FailedPlaying:
//“再生失敗“
break;
case AdfurikunMovieRewardUtility.ADF_MovieStatus.AdClose:
//“動画を閉じた“
break; default:
return; }
}
}
このコールバック関数のケース文の中でやりたいこと記述すればおk!
河条はこの動画再生完了が全然取得できず、数日間さまよっていた。。。ちなみに原因はenumで定義した状態をupdateの中でチェックしていなかったからという^p^
でもツイッター見てると意外とつまってる人いた感じだったので解決方法共有!このソースそのまま使えばできるから!
以上!プログラマーの味方、河条でした!
さよなら さよなら さよなら(淀川長治風)
Android Studioで動画リワード表示したいのですがよくわかりません。
//広告動画を再生させるボタン
を使って動画再生後に画面遷移する方法がお分かりになるのであれば教えていただきたいのです。
unityを使ったiphoneでしか試していないので、はっきりはわかりませんが
動画再生後に画面遷移したいのであれば以下のcase文の中に画面遷移する処理を入れるのではないでしょうか??
一度試してみてください!!><
case AdfurikunMovieRewardUtility.ADF_MovieStatus.FinishedPlaying:
//“再生完了” ここで増やしたいゲーム内アイテムを記述する
break;
ありがとうございます。
大変参考になりました、ありがとうございます。
初期化関数initializeMovieReward()を使っていないのには、何か理由があるのでしょうか?
しかし確かに、使わなくても不思議と動画が表示されますね。
initializeMovieReward()はゲームオブジェクトのAdfurikunMovieRewardUtilityについているAdfurikunMovieRewardUtility.csでされているのでこちらのムービー用スクリプトでは読んであげる必要はないみたいです!
またAdfurikunMovieRewardUtilityのゲームオブジェクトは作ったムービーリワード用のcsファイルの方で取得しています。