我在一个Android游戏工作,我想添加AdMob广告到我的游戏。我已经添加了横幅和间隙视图,但在RewardBasedVideoAd特别是OnAdRewarded事件的问题,当用户关闭视频返回到游戏,以赚取他的奖励游戏崩溃立即。
经过多次尝试,我发现代码崩溃的游戏,gameObject.SetActive(true)
和gameObject.SetActive(false)
,是问题,当我停用游戏面板UI和积极的奖励面板UI游戏崩溃立即.
我该如何解决这个问题?为什么当我使用gameObject.SetActive时游戏会崩溃?
导致app崩溃的代码
public void HandleOnAdRewarded(object sender, EventArgs args)
{
gamePanel.SetActive(false);
rewardPanel.SetActive(true);
}
申请奖励代码
public void RequestReward()
{
AdRequest request = new AdRequest().Builder().Build();
this.rewardAd.LoadAd(request, rewardAdId);
rewardAd.OnAdLoaded += this.HandleOnRewardAdLoaded;
rewardAd.OnAdRewarded += this.HandleOnAdRewarded;
rewardAd.OnAdClosed += this.HandleOnRewardAdClosed;
}
处理程序
public void HandleOnRewardAdLoaded(object sender, EventArgs args)
{
if(rewardAd.IsLoaded())
{
rewardAd.Show();
}
}
public void HandleOnAdRewarded(object sender, EventArgs args)
{
gamePanel.SetActive(false);
rewardPanel.SetActive(true);
}
public HandleOnRewardAdClosed(object sender, EventArgs args)
{
rewardAd.OnAdLoaded -= this.HandleOnRewardAdLoaded;
rewardAd.OnAdRewarded -= this.HandleOnAdRewarded;
rewardAd.OnAdClosed -= this.HandleOnRewardAdClosed;
}
3条答案
按热度按时间lbsnaicq1#
任何人都有这个问题
问题原因是TextMesh Pro包
只需卸载。
icnyk63a2#
我有同样的问题,在我的情况下,我正在改变UI和发送请求到服务器后,OnAdClosed和OnRewardEarned,所以崩溃发生时,我关闭广告。
我认为原因是这些更改实际上在返回到应用程序之前应用,并且在此期间应用程序暂停。所以我通过使用bool来修复它,以便知道如果OnAdClosed和OnRewardEarned被调用,则更改UI并在OnApplicationPause函数中发送请求,如下面的代码。
注意:我在OnAdClosed和OnRewardEarned中发送分析事件,它们工作正常,没有任何问题或崩溃。
s4chpxco3#
有一个更好的解决这个问题的方法,而不是避免TextMeshPro,如下所示:Game crashes after showing intersitial and rewarded ads
使用https://github.com/PimDeWitte/UnityMainThreadDispatcher调用主线程相关代码。