0

所以我在我的 Unity 项目中添加了一个基于奖励的广告,我想用 300 个硬币奖励观看广告的用户,但我每次都得到重复的奖励。我想我知道问题出在哪里,但我无法解决!

我有这个启动函数和一个在我的广告脚本上获得奖励的函数:

    void Start()
{
    this.rewardBasedVideoAd = RewardBasedVideoAd.Instance;
    rewardBasedVideoAd.OnAdLoaded += HandleOnAdLoaded;
    rewardBasedVideoAd.OnAdOpening += HandleOnAdOpening;
    rewardBasedVideoAd.OnAdClosed += HandleOnAdClosed;
    rewardBasedVideoAd.OnAdRewarded += HandleOnAdRewarded;
    MobileAds.Initialize(initStatus => { });
    this.LoadRewardBasedAd();
}

public void HandleOnAdRewarded(object sender, Reward args)
{
    PlayerPrefs.SetInt("coins", PlayerPrefs.GetInt("coins") + 300);   

}

当您在游戏中死去并想重新开始时,我会呼叫SceneManager.LoadScene(0);这是我得到的唯一场景!我认为当我加载场景时,开始功能再次运行并添加另一个奖励rewardBasedVideoAd.OnAdRewarded += HandleOnAdRewarded;。我曾尝试rewardBasedVideoAd.OnAdRewarded -= HandleOnAdRewarded;在不同的时间多次拨打电话,但并没有解决问题。

如果我连续n次重新开始游戏,当我看广告时,我将获得n次奖励!有人能帮我吗?先感谢您!

4

2 回答 2

1

很确定你只想在整个游戏中保留这个 GameObject 的一个实例。

我会为这个游戏对象调用DontDestroyOnLoad

我认为你需要调整你的 Start 函数,在你做你的东西之前你需要看看你是否已经在场景中拥有这样的对象(只需用特定标签标记这个 GameObject 并在你的 start 函数中查找具有该标签的对象)。(按照我在上面附上的 Unity 文档中的示例进行操作。DontDestroy.cs是您从那里需要的)

于 2020-05-10T11:30:49.437 回答
0

只需添加OnDestroy函数并取消订阅事件。就这样。

于 2020-07-02T09:55:46.247 回答