Unity Admob onRewarded给了我错误的金额

时间:2017-08-27 21:48:22

标签: c# unity3d admob unity5

我使用Github的Admob API - > https://github.com/unity-plugins/Unity-Admob

我面临一个奇怪的问题。我的脚本有效!我点击按钮启动ShowRewardVideo(),它会显示视频。之后我想给我的用户赠送硬币。正如您所看到的,它只是通过添加20来增加PlayerPref中当前的硬币数量。

问题出在哪里?我没有得到+20硬币我随机额外的金额。上次是之前的+280和+320。我用其他金额测试了它,似乎我总是多次获得奖励。所以14 * 20 = 280等等。

但为什么我的剧本多次添加奖励?

你能帮帮我吗?

private void Start() {
Admob.Instance().rewardedVideoEventHandler += onRewardedVideoEvent;

}

    public void ShowRewardVideo() {
    if(Admob.Instance().isRewardedVideoReady()) {
        Admob.Instance().showRewardedVideo();
    } else {
        Admob.Instance().loadRewardedVideo("ca-app-pub-5129395190259237/xxxxxxxxx");
        ShowRewardVideo();
    }
}

void onRewardedVideoEvent(string eventName, string msg) {
    Debug.Log("handler onRewardedVideoEvent---" + eventName + "   " + msg);
    if(eventName == "onRewarded") {
            PlayerPrefs.SetInt("mmig", PlayerPrefs.GetInt("mmig") + 20);
            PlayerPrefs.Save();
    }

}

1 个答案:

答案 0 :(得分:0)

我首先要检查这部分代码被调用的频率:

if(eventName == "onRewarded") {
        PlayerPrefs.SetInt("mmig", PlayerPrefs.GetInt("mmig") + 20);
        PlayerPrefs.Save();
}

这样做只需调用Debug.Log(" Runned")或类似的东西。 你也应该考虑做这个部分:

PlayerPrefs.SetInt("mmig", PlayerPrefs.GetInt("mmig") + 20);

有这样的事情:

int oldAmount = PlayerPrefs.GetInt("mmig");
int newAmount = oldAmount + 20;
PlayerPrefs.SetInt("mmig",newAmount);

避免可能隐含的转换错误。但这改变了你当前的问题并不是必需的,只是一个提示:)。

请务必检查您在控制台中获得上述输出的次数