###前提・実現したいこと
参考サイトをもとに
リワード広告を組み込みボタンを押すと動画が再生される所まで実装できたのですが、
報酬受け取り時の処理が動作していないみたいで、
動作チェックとしてDebug.Logで確認した所、表示されず、
PlayerPrefsで値を取得させる命令文を記載しましたが値の保存ができていませんでした。
そのため動画終了後の報酬が発生しない(取得できていない)状態に陥り困っています。
ご教示いただけますと幸いです。
※報酬はゲーム中のステージをスキップする(クリア状態にする)を考えております。
「PlayerPrefs.SetInt("CLEAR", stageNumber);」(下記のスキップボタンソースより)
###該当のソースコード
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; public class AdMob_Reward : MonoBehaviour { public string adUnitId = "テスト用ID"; private RewardBasedVideoAd rewardBasedVideo; private AdRequest request; private static bool rewardBasedEventHandlersSet = false; // Use this for initialization void Awake() { rewardBasedVideo = RewardBasedVideoAd.Instance; //広告の読み込み RequestRewardBasedVideo(); } public void RequestRewardBasedVideo() { // Create an empty ad request. request = new AdRequest.Builder() .AddTestDevice(AdRequest.TestDeviceSimulator) .Build(); // Reward based video instance is a singleton. Register handlers once to avoid duplicate events. if (!rewardBasedEventHandlersSet) { rewardBasedVideo.OnAdLoaded += HandleRewardBasedVideoLoaded; // ad has been received. rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;// ad has failed to load. rewardBasedVideo.OnAdOpening += HandleRewardBasedVideoOpened; // ad is opened. rewardBasedVideo.OnAdStarted += HandleRewardBasedVideoStarted; // ad has started playing. rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded; // ad has rewarded the user. rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoClosed; // ad is closed. rewardBasedVideo.OnAdLeavingApplication += HandleRewardBasedVideoLeftApplication; // ad is leaving the application. rewardBasedEventHandlersSet = true; } // Load the rewarded video ad with the request. rewardBasedVideo.LoadAd(request, adUnitId); } //リワード広告の表示 public void Show(Action handler) { //もしも動画のロードがされていたら if (rewardBasedVideo.IsLoaded()) { //動画を再生 rewardBasedVideo.Show(); Debug.Log("広告を再生しました");//表示されるのを確認 } } //動画ロード時のハンドラ― public void HandleRewardBasedVideoLoaded(object sender, EventArgs args) { } //動画ロード失敗時のハンドラ― public void HandleRewardBasedVideoFailedToLoad(object sender, EventArgs args) { StartCoroutine(_waitConnectReward()); } //動画が開かれた時のハンドラ― public void HandleRewardBasedVideoOpened(object sender, EventArgs args) { } //動画が再生された時のハンドラ― public void HandleRewardBasedVideoStarted(object sender, EventArgs args) { } //動画を見た後にプレイヤーに与える恩恵を用意 public void HandleRewardBasedVideoRewarded(object sender, Reward args) { //報酬受け取り時の処理(動作していない?) ///////////////////////////////////////////////////////// Debug.Log("報酬を受け取りました"); [➨表示されない]* //int Housyu = PlayerPrefs.GetInt("REWARD"); //Housyu++; //PlayerPrefs.SetInt("REWARD", Housyu); ///////////////////////////////////////////////////////// StartCoroutine(_waitConnectReward()); } //動画が閉じた時のハンドラ― public void HandleRewardBasedVideoClosed(object sender, EventArgs args) { //動画を閉じたときに、次の動画を読み込む if (!rewardBasedVideo.IsLoaded()) { rewardBasedVideo.LoadAd(request, adUnitId); // Load } } //動画が終わった後にアプリにリワードを送信する時のハンドラ― public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args) { } // ロードに失敗した場合、1秒待ってから再ロードをする IEnumerator _waitConnectReward() { while (true) { yield return new WaitForSeconds(1.0f); // 通信ができない場合は、リロードしない if (Application.internetReachability != NetworkReachability.NotReachable) { RequestRewardBasedVideo(); break; } } } } ``` ###スキップボタンのソースコード
//ボタン動作
public void PushButton()
{
admob_Reward.Show();//広告再生
if(「報酬」 >=1)//報酬の値を受け取った時
{
PlayerPrefs.SetInt("CLEAR", stageNumber);ゲームをクリア扱いにする
SceneManager.LoadScene("StageSelect");ステージセレクト画面へ
}
}
※広告はテスト用を使用しています。 参考サイト; www.hanachiru-blog.com/entry/2018/10/07/022440 hatenyan.blogspot.com/2018/04/admob-adsense.html Unity 2019.2.8f1 言語:C#
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/25 17:01