Награда за продолжение игры дает другое вознаграждение - PullRequest
0 голосов
/ 07 апреля 2019

Я импортировал 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);

    }

}
...