问题描述
自2个星期以来,我面临一个困扰我的问题。我正在尝试将奖励视频代码实施到在Unity中创建的手机游戏中。一切正常,除非有一次广告展示过程出现问题,而其他所有时间我都想展示奖励视频,但我遇到了问题。我在开始功能中请求并加载视频,并且游戏中的每个场景都将脚本附加到游戏对象上,因此我在每个场景的开头调用新的请求并加载。如果有人可以提出建议,我会很高兴,
我正在通过一个按钮调用ShowRewardAd()函数,当玩家没有生命时(该玩家一开始有3条生命),该按钮会弹出。
编辑:我认为它之所以无法展示新的干净广告,是因为我没有破坏有问题的请求。我进行了搜索,发现有人使用UnityAds通过请求Advertisement.RemoveListener(this)
函数解决了该问题。我无法使用它,我相信是因为我正在尝试使用Admob广告。因此,如果有人知道如何销毁RewardVideoAds,它可能会对我有所帮助。
谢谢。这是我的脚本:
public class Rewardedvideo : MonoBehavIoUr
{
string Video_Ad_ID = "ca-app-pub-3940256099942544/5224354917";
private RewardedAd rewardedAd;
public bool ready = false;
void Start()
{
RequestRewardAd();
}
public void RequestRewardAd()
{
this.rewardedAd = new RewardedAd(Video_Ad_ID);
AdRequest request = new AdRequest.Builder().Build();
Debug.Log("request video");
this.rewardedAd.LoadAd(request);
Debug.Log("Loaded video");
this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
this.rewardedAd.OnAdClosed += HandleOnRewardedAdClosed;
}
public void HandleRewardedAdFailedToShow(object sender,AdErrorEventArgs args)
{
OnDestroy();
RequestRewardAd();
}
public void HandleOnRewardedAdClosed(object sender,EventArgs args)
{//ad closed (even if not finished watching)
this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
RequestRewardAd();
}
public void HandleRewardedAdFailedToLoad(object sender,AdErrorEventArgs args)
{
ready = false;
this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
RequestRewardAd();
}
public void HandleUserEarnedReward(object sender,Reward args)
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildindex);
}
public void showRewardedAd()
{
if (ready)
{
this.rewardedAd.Show();
Debug.Log("Showed or not ?");
}
else
{
this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
RequestRewardAd();
SceneManager.LoadScene(SceneManager.GetActiveScene().buildindex);
}
}
public void OnDestroy()
{
this.rewardedAd.OnAdLoaded -= HandleRewardedAdLoaded;
rewardedAd.OnAdFailedToLoad -= this.HandleRewardedAdFailedToLoad;
rewardedAd.OnAdFailedToShow -= this.HandleRewardedAdFailedToShow;
rewardedAd.OnUserEarnedReward -= this.HandleUserEarnedReward;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
}
public void HandleRewardedAdLoaded(object sender,EventArgs args)
{
ready = true;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)