因此,我在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 次奖励! 有人能帮我吗?预先谢谢你!
答案 0 :(得分:1)
请确保您要在整个游戏中只保留一个GameObject实例。
我会为此游戏对象致电DontDestroyOnLoad。
我认为您需要调整“开始”功能,您需要在进行操作之前查看是否已在场景中找到此类对象(只需使用特定标签标记该GameObject并在开始时查找带有该标记的对象功能)。 (以下是我上面所附的Unity文档中的示例。DontDestroy.cs
是您所需要的)
答案 1 :(得分:0)
只需添加OnDestroy函数并取消订阅事件即可。就是这样。