首页 文章

更改场景后,Unity Admob奖励视频监听器无法正常工作

提问于
浏览
0

这个问题最近让我感到震惊,之前从未注意过,显然,我在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 回答

  • 0

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

    1 . 将 DontDestroyOnLoad(gameObject); 添加到 Start 函数,以便在加载新场景时不会销毁 GamePlayManager 脚本 .

    2 . 使用 -= 订阅 OnDestroy 函数中的事件,就像订阅 += 一样 . 我没有看到Admob示例这样做,但您应该始终取消订阅您的活动 .

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

    其中任何一个都可以解决您的问题 . 如果一个失败,请使用另一个 .

相关问题