这个问题最近让我感到震惊,之前从未注意过,显然,我在Unity3D项目中使用过admob奖励视频 .
在我的项目中,我在级别失败时奖励用户,当用户观看奖励视频时,奖励是给予用户和场景自动更改为等级选择 . 当用户再次启动游戏时,再次失败时,观看视频,但没有任何反应 .
经过一些调试后,我发现第二次加载游戏场景时,听众没有工作 .
我有一个GamePlayManager脚本,我正在做所有的功能..
public class GamePlayManager : MonoBehaviour {
private RewardBasedVideoAd rewardBasedVideoAd;
void Start()
{
rewardBasedVideoAd = RewardBasedVideoAd.Instance;
RequestRewardBasedVideo ();
rewardBasedVideoAd.OnAdFailedToLoad += HandleRewardBasedVideoFailedToLoad;
// has rewarded the user.
rewardBasedVideoAd.OnAdRewarded += HandleRewardBasedVideoRewarded;
}
private void RequestRewardBasedVideo()
{
#if UNITY_ANDROID
string adUnitId = GameConstants.AdmobRewardedVideoID;
#elif UNITY_IPHONE
string adUnitId = GameConstants.AdmobIOSRewardedVideoID;
#else
string adUnitId = "unexpected_platform";
#endif
AdRequest request = new AdRequest.Builder().Build();
rewardBasedVideoAd.LoadAd(request, adUnitId);
}
public void showAdmobRewardedVideo()
{
if (rewardBasedVideoAd.IsLoaded())
{
rewardBasedVideoAd.Show();
}
}
public void HandleRewardBasedVideoRewarded(object sender, Reward args)
{
Debug.Log ("Unity AdmobRewardGiven");
nextLevel ();
gotoLevelSelection ();
}
public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
Debug.Log ("Admob RewardedVideo FailedToLoad");
}
}
1 回答
当您加载新场景时
GamePlayManager
被销毁 . 你有两个选择:1 . 将
DontDestroyOnLoad(gameObject);
添加到Start
函数,以便在加载新场景时不会销毁GamePlayManager
脚本 .2 . 使用
-=
订阅OnDestroy
函数中的事件,就像订阅+=
一样 . 我没有看到Admob示例这样做,但您应该始终取消订阅您的活动 .其中任何一个都可以解决您的问题 . 如果一个失败,请使用另一个 .