In my game the player is shooting boxes and when box is collided with projectile we get the points. After 50 points are collected the level is over. After that there are texts with their colliders called NextLevel shown in the game scene. When we hit the NextLevel collider we continue to the next level.
So far so good…
But I want to add an advertisement with UnityAds like after I hit the NextLevel Collider with my projectile I want to show the ad first and then load the next level. I have a problem in there.
These are my scripts:
using UnityEngine;
using System.Collections;
using UnityEngine.Advertisements;
public class NextLevel : MonoBehaviour {
AdsManager ad = new AdsManager();
void OnCollisionEnter(Collision newCollision)
{
//When the NextLevel Collider is hit by the Projectile
if (newCollision.gameObject.tag == "Projectile")
{
if(Advertisement.IsReady())
ad.ShowAd();
//Check if the advertisement is over then call the next level
//GameManager.gm.NextLevel();
}
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Monetization;
using UnityEngine.UI;
public class AdsManager : MonoBehaviour
{
public static AdsManager AdM;
private string gameID = "1234567";
public string myPlacementId = "rewardedVideo" ;
private bool isTestModeActive = true;
void Start()
{
//Advertisement.AddListener(this);
if (Application.platform == RuntimePlatform.IPhonePlayer)
gameID = "3876524";
else if (Application.platform == RuntimePlatform.Android)
gameID = "3876525";
Monetization.Initialize(gameID, isTestModeActive);
}
public void ShowAd()
{
Debug.Log("Ad is going to shown");
StartCoroutine(WaitForAd());
}
IEnumerator WaitForAd()
{
Debug.Log("StartCoroutine");
while (!Monetization.IsReady(myPlacementId))
{
yield return null;
}
ShowAdPlacementContent ad = null;
ad = Monetization.GetPlacementContent(myPlacementId) as ShowAdPlacementContent;
if (ad != null)
{
ad.Show(AdFinished);
}
}
void AdFinished(ShowResult result)
{
if (result == ShowResult.Finished)
{
}
}
}