Unity MobAd奖励视频不起作用



我遇到了一个奇怪的问题。我已经在我的游戏中实现了一个广告代码,当我的玩家死亡时,我要求玩家观看广告并重生。当我在手机上构建并安装apk时,在第一次播放时,一切都很好。第二次尝试后,我的rewarderAdd.OAddRewarded函数根本不起作用。我在游戏中控制广告状态,在第二次游戏中,我可以看到奖励系统没有发挥作用。这是我的代码

void Start()
{
adState = 0;
gameOverScript = GameObject.Find("GameOver").GetComponent<GameOverCode>();
kingSCript = GameObject.FindGameObjectWithTag("Player").GetComponent<RedKing>();
isCompleted = false;
RequestRewardedVideo();
this.rewardedAd.OnAdRewarded += RewardPlayer;
// this.rewardedAd.OnAdClosed += PlayerClosed;

}
public void RequestRewardedVideo()
{
rewardedAd = RewardBasedVideoAd.Instance;
// Create an empty ad request.
AdRequest request = new AdRequest.Builder().Build();
// Load the rewarded ad with the request.
this.rewardedAd.LoadAd(request,rewarderID);
if(rewardedAd.IsLoaded() == true)
{
adState = 5;
}

}
private void RewardPlayer(object sender, EventArgs e)
{
isCompleted = true;
adState = 1;
Reward();
}
private void PlayerClosed(object sender, EventArgs e)
{
if(adState != 1)
{
adState = -1;
}
}

public void Reward()
{
adState = 1;
kingSCript.Reborn();
}
public void ShowVideoRewardAd()
{
if (this.rewardedAd.IsLoaded())
{
adState = 2;
isLoaded = true;
this.rewardedAd.Show();
}
else
{
isLoaded = false;
}
}

为什么广告状态在第二次尝试中不起作用?每次我重新上传场景,所以每个代码都应该像第一次一样工作,但根本不起作用!

解决方案是对所有方法使用-=函数。检查这个脚本

void Start()
{
gameOverScript = GameObject.Find("GameOver").GetComponent<GameOverCode>();
kingScript = GameObject.FindGameObjectWithTag("Player").GetComponent<RedKing>();
adState = 0;
rewardedID = "ca-app-pub-3940256099942544/5224354917";
rewardedAd = RewardBasedVideoAd.Instance;
isAdLoaded = false;
RequestRewardedAd();
}

void Update()
{
Debug.Log(adState);
if (rewardedAd.IsLoaded())
{
isAdLoaded = true;
Debug.Log("burda");
}
if(adState == 1)
{
kingScript.Reborn();
}
if(adState == -1)
{
gameOverScript.FinishTheGame();
}

}

public void RequestRewardedAd()
{
AdRequest request = AdRequestBuild();
rewardedAd.LoadAd(request, rewardedID);
rewardedAd.OnAdLoaded += this.HandleOnRewardedAdLoaded;
rewardedAd.OnAdRewarded += this.HandleOnAdRewarded;
rewardedAd.OnAdClosed += this.HandleOnRewardedAdClosed;
}
public void HandleOnRewardedAdLoaded(object sender, EventArgs args)
{
Debug.Log("loaded");
adState = 3;
}
public void HandleOnAdRewarded(object sender, EventArgs args)
{
adState = 1;

}
public void HandleOnRewardedAdClosed(object sender, EventArgs args)
{
rewardedAd.OnAdLoaded -= this.HandleOnRewardedAdLoaded;
rewardedAd.OnAdRewarded -= this.HandleOnAdRewarded;
rewardedAd.OnAdClosed -= this.HandleOnRewardedAdClosed;
if(adState != 1)
{
playerAdCount = PlayerPrefs.GetInt("PlayerDontWatchTheAds");
playerAdCount++;
PlayerPrefs.SetInt("PlayerDontWatchTheAds", playerAdCount);
adState = -1;
}
}
public void ShowRewardAd()
{
if (rewardedAd.IsLoaded())
{
rewardedAd.Show();
}
}
AdRequest AdRequestBuild()
{
return new AdRequest.Builder().Build();
}

最新更新