C# Admob视频奖励仅播放一次

C# Admob视频奖励仅播放一次,c#,unity3d,C#,Unity3d,我一直在尝试在我开发的一款游戏上实现Admob服务。但是奖励视频系统让我头疼。 当我启动应用程序时,视频广告会显示并给玩家我为之编程的奖励。 但当我第二次按下按钮观看视频时,什么也没发生。视频不加载,不显示 我的代码: private RewardBasedVideoAd rewardBasedVideo; public GameObject GameOverUI; public GameObject RewardPanel; public int count=0; pu

我一直在尝试在我开发的一款游戏上实现Admob服务。但是奖励视频系统让我头疼。 当我启动应用程序时,视频广告会显示并给玩家我为之编程的奖励。 但当我第二次按下按钮观看视频时,什么也没发生。视频不加载,不显示

我的代码:

private RewardBasedVideoAd rewardBasedVideo;
public GameObject GameOverUI;
    public GameObject RewardPanel;
    public int count=0;
    public static string OutputMessage
    {
        set { outputMessage = value; }
    }

    public static GoogleMobileAdsDemoScript instance = null;
    public static GoogleMobileAdsDemoScript Instance 
    {
        get{return instance;}
    }
    void Awake() 
    {


        if (instance != null && instance != this) 
        {
            Destroy(this.gameObject);
            return;
        } 
        else 
        {
            instance = this;
        }
        DontDestroyOnLoad(this.gameObject);

    }




    public void Start()
    {

            // Get singleton reward based video ad reference.
            this.rewardBasedVideo = RewardBasedVideoAd.Instance;

            // RewardBasedVideoAd is a singleton, so handlers should only be registered once.
            this.rewardBasedVideo.OnAdLoaded += this.HandleRewardBasedVideoLoaded;
            this.rewardBasedVideo.OnAdFailedToLoad += this.HandleRewardBasedVideoFailedToLoad;
            this.rewardBasedVideo.OnAdOpening += this.HandleRewardBasedVideoOpened;
            this.rewardBasedVideo.OnAdStarted += this.HandleRewardBasedVideoStarted;
            this.rewardBasedVideo.OnAdRewarded += this.HandleRewardBasedVideoRewarded;
            this.rewardBasedVideo.OnAdClosed += this.HandleRewardBasedVideoClosed;
            this.rewardBasedVideo.OnAdLeavingApplication += this.HandleRewardBasedVideoLeftApplication;


            this.RequestRewardBasedVideo ();




    }





//   
    // Returns an ad request with custom ad targeting.
    private AdRequest CreateAdRequest()
    {
        return new AdRequest.Builder().Build();

    }





    private void RequestRewardBasedVideo()
    {

        #if UNITY_ANDROID
        string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
        string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #else
        string adUnitId = "unexpected_platform";
        #endif

        this.rewardBasedVideo.LoadAd(this.CreateAdRequest(), adUnitId);
    }

    public void LoadAd()
    {
        RequestRewardBasedVideo();
    }




    public void ShowRewardBasedVideo()
    {
        if (this.rewardBasedVideo.IsLoaded())
        {

            count++;
            PlayerPrefs.SetInt ("adstype", 1);
            this.rewardBasedVideo.Show();

        }
        else
        {
            MonoBehaviour.print("Reward based video ad is not ready yet");
        }
    }







    #region RewardBasedVideo callback handlers

    public void HandleRewardBasedVideoLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoLoaded event received");
    }

    public void HandleRewardBasedVideoFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        RequestRewardBasedVideo ();

        MonoBehaviour.print(
            "HandleRewardBasedVideoFailedToLoad event received with message: " + args.Message);
    }

    public void HandleRewardBasedVideoOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoOpened event received");
    }

    public void HandleRewardBasedVideoStarted(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardBasedVideoStarted event received");
    }


    public void HandleRewardBasedVideoClosed(object sender, EventArgs args)
    {

        RequestRewardBasedVideo();
        MonoBehaviour.print("HandleRewardBasedVideoClosed event received");


    }

    public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        MonoBehaviour.print(
            "HandleRewardBasedVideoRewarded event received for " + amount.ToString() + " " + type);

        GameOverUI.SetActive(false);
        RewardPanel.SetActive(true);
    }

    public void HandleRewardBasedVideoLeftApplication(object sender, EventArgs args)
    {

        MonoBehaviour.print("HandleRewardBasedVideoLeftApplication event received");
    }

    public void ReceiveReward()
    {
        StartCoroutine(Restarttime());
    }

    IEnumerator Restarttime()
    {
        Time.timeScale = 1f;
        PlayerPrefs.SetInt("ScoreReward", 1);
        yield return new WaitForSeconds(0.2f);
        RewardPanel.SetActive(false);
        SceneManager.LoadScene("Game");
    }



    #endregion
}
欢迎任何帮助。 多谢各位