因此,我增加了一个基于我的团结项目的广告奖励,我想奖励用户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);,这是我唯一得到的场景!我想当我加载场景时,Start函数再次运行,并添加了另一个奖励rewardBasedVideoAd.OnAdRewarded += HandleOnAdRewarded;。我已经尝试过多次和不同的时候给rewardBasedVideoAd.OnAdRewarded -= HandleOnAdRewarded;打电话,但是它并没有解决这个问题。
如果我连续重启游戏n次数,当我看广告时,我会得到奖励n倍!有人能帮我吗?提前谢谢你!
发布于 2020-05-10 11:30:49
非常确定的是,您希望在整个游戏中只保留这个GameObject的一个实例。
我会为这个DontDestroyOnLoad打电话给GameObject。
我认为您将需要调整您的开始函数,您需要在执行操作之前查看场景中是否已经有这样的对象(只需使用特定的标记标记这个GameObject,并在开始函数中查找带有该标记的对象)。(请遵循上面所附的Unity中的示例。DontDestroy.cs是你需要的)
发布于 2020-07-02 09:55:46
只需添加OnDestroy函数并取消订阅事件即可。就这样。
https://stackoverflow.com/questions/61702791
复制相似问题