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