更改场景后 Unity Admob 奖励视频听众不工作

Unity Admob Rewarded Video Listeners Not Working after changing Scene

这个问题最近一直困扰着我,以前从来没有注意到,显然,我在我的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");
    }
}

加载新场景时 GamePlayManager 被销毁。您有两个选择:

1。将DontDestroyOnLoad(gameObject);添加到Start函数中,以便在加载新场景时不会破坏GamePlayManager脚本。

2。使用 -= 取消订阅 OnDestroy 函数中的事件,就像使用 += 订阅一样。我没有看到 Admob 示例执行此操作,但您应该始终 退订您的活动。

public void OnDestroy()
{
    rewardBasedVideoAd.OnAdFailedToLoad -= HandleRewardBasedVideoFailedToLoad;

    rewardBasedVideoAd.OnAdRewarded -= HandleRewardBasedVideoRewarded;
}

其中任何一个都应该可以解决您的问题。如果一个失败了,就用另一个。