我已将google admob导入我的游戏中,并遵循此tutorial来帮助我实施奖励视频活动。我有两个不同的按钮,玩家可以单击它们来观看奖励的视频,以便玩家可以获取奖励,继续游戏按钮和双硬币按钮。
双硬币按钮使玩家每次游戏赚取的硬币数量增加一倍,继续游戏按钮使玩家上次退出游戏的游戏继续进行。双硬币奖励效果很好,我无法继续游戏奖励。
您会看到玩家何时(第一次)打开游戏,死去并单击继续游戏按钮;奖励是在视频播放后给出的,但播放器也将获得双硬币奖励。 我还注意到,再次玩完游戏并单击“继续游戏”按钮后,我不再获得继续游戏的奖励,而是获得了双币奖励。
我在AdMob脚本中创建了一个名为“ OnAdReward”的新事件,因为我认为这有助于防止将双硬币奖励添加到继续游戏奖励中。但是,这并不能解决我的问题。谁能帮我解决这个问题?谢谢!
新更新: 我也在游戏内创建了一个控制台窗口,也检查我是否发现了我不知道的任何错误,并发现当我单击继续游戏按钮时,我得到了空引用错误(但没有说出位置)。我是双币奖励,而不是继续游戏奖励。
public void ContinueGameReward() {
Time.timeScale = 1;
GameController.death = false;
GameController.playerDeath = false;
GC.isDead = false;
playGame = true;
pc.controlPlayer = true;
GameOverPanel.SetActive (false);
GameOverPanelText.enabled = false;
heartsImage.enabled = true;
DIED = false;
}
public void ContinueGameFromSavePoint() {
Admob.Instance().OnAdReward+= onAdmobEventsHandler;
#if UNITY_EDITOR
Debug.Log("Unable to play ad in the EDITOR");
Debug.Log("Continue game");
#elif UNITY_ANDROID
//Admob ad = Admob.Instance ();
if (ad.isRewardedVideoReady ()) {
ad.showRewardedVideo ();
} else {
ad.loadRewardedVideo ("ca-app-pub-3940256099942544/1712485313"); //this is a test ID I found on github
}
#endif
}
void onAdmobEventsHandler(string eventNames, string msgs)
{
if (eventNames == "onRewarded") {
//Add reward here!!!!
ContinueGameReward();
Debug.Log ("Well Done! You get a second life");
Debug.Log ("handler AdmobEventsHandler---" + eventNames + " " + msgs);
}
}
public void doubleRewardFunction () {
GameController.Coins+= GameController.doubleCoins;
Debug.Log("CURRENCY ADDED");
}
public void DoubleRewaredPoints() {
Admob.Instance().rewardedVideoEventHandler += onRewardedVideoEvent;
#if UNITY_EDITOR
Debug.Log("Unable to play ad in the EDITOR");
Debug.Log("Double rewards");
#elif UNITY_ANDROID
if (ad.isRewardedVideoReady ()) {
ad.showRewardedVideo ();
} else {
ad.loadRewardedVideo ("ca-app-pub-3940256099942544/1712485313"); //this is a test ID I found on github
}
#endif
}
void onRewardedVideoEvent (string eventName, string msg)
{
if (eventName == "onRewarded") {
doubleRewardFunction ();
Debug.Log ("handler onRewardedVideoEvent---" + eventName + " " + msg);
}
}