Я импортировал google admob в свою игру и следовал этому учебнику , чтобы помочь мне реализовать вознагражденное видео-событие. У меня есть две разные кнопки, на которые игрок может нажать, чтобы посмотреть видео с вознаграждением, чтобы игрок мог получить награды, кнопку продолжения игры и кнопку двойных монет.
Кнопка двойных монет дает игроку удвоенное количество монет, которые они зарабатывают за каждую игру, а кнопка продолжения игры продолжает игру, где последний игрок остановился. Награда за двойные монеты работает отлично, у меня проблемы с вознаграждением за продолжение игры.
Вы видите, когда игрок открывает игру (впервые), умирает и нажимает кнопку продолжения игры; вознаграждение дается после воспроизведения видео, но игрок также получает награду за двойные монеты.
Я также замечаю, что после повторной игры и нажатия кнопки «Продолжить игру» я больше не получаю вознаграждение за продолжение игры, вместо этого я получаю вознаграждение в виде двойных монет.
Я создал новое событие под названием «OnAdReward» в скрипте AdMob, так как думал, что это поможет предотвратить добавление награды в виде двойной монеты к награде за продолжение игры. Однако это не решило мою проблему. Может кто-нибудь помочь мне исправить это? Спасибо!
Новое обновление:
Я также создал консольное окно в своей игре, проверил, нет ли каких-либо ошибок, о которых я не знаю, и обнаружил, что у меня появляется нулевая ссылка (но не сказано, где), когда я нажимаю кнопку продолжения игры, которая дает мне награда за двойную монету вместо награды за продолжение игры.
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);
}
}