[C#] Object not set to a reference of an Object (Google AdMob)
Having an issue with my Admob Script, the banner Ads show perfectly, however I have set up a button in the UI to test the Interstitial ads with AdMob, yet they do not show up in the game when I click the Button. The button is attached to my Canvas Element and the AdManager script is referenced to the UIHandler.
Every time I click the button in the editor, and yes I'm aware the test ads will not show if it's in the editor, I was trying to see if the button would return the correct statement or if the button would do what it's been doing which is giving me a "Object not set to a reference of an Object" error. I'm at a loss, I have no clue what's going on and I'd like to finish this before I release the next update to my game.
The full Error Code:
NullReferenceException: Object reference not set to an instance of an object
AdManager.OnDie () (at Assets/AdManager.cs:106)
UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:166)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:36)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:45)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()
Here is the Code: Note The ID's are not my ID's they are Googles test Ids
private BannerView bannerView;
public UIHandler UIHandle;
public string bannerID = "ca-app-pub-3940256099942544/6300978111";
public string interstitialID = "ca-app-pub-3940256099942544/1033173712";
InterstitialAd interstitial;
public void Start()
{
//Aquiring UIHandler
UIHandle = GetComponent<UIHandler>();
#if UNITY_ANDROID
bannerID += bannerID;
#elif UNITY_IPHONE
string bannerID = "";
#else
string bannerID = "UNEXPECTED_PLATFORM";
#endif
MobileAds.Initialize(bannerID);
MobileAds.Initialize(interstitialID);
this.RequestBanner();
this.RequestInterstitial();
}
private void RequestBanner()
{
#if UNITY_ANDROID
bannerID += bannerID;
#elif UNITY_IPHONE
string bannerID = "";
#else
string bannerID = "UNEXPECTED_PLATFORM";
#endif
bannerView = new BannerView(bannerID, AdSize.SmartBanner, AdPosition.Top);
//Creating an Empty Ad Request
AdRequest newRequest = new AdRequest.Builder().AddTestDevice("").Build();
//Loading Banner
bannerView.LoadAd(newRequest);
bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
}
//Interstitial Ads
private void RequestInterstitial()
{
#if UNITY_ANDROID
interstitialID += interstitialID;
#elif UNITY_IPHONE
string interstitialID = "";
#else
string interstitialID = "UNEXPECTED_PLATFORM";
#endif
//Inititialize Interstitial
InterstitialAd interstitial = new InterstitialAd(interstitialID);
// Creating an Empty Request
AdRequest newRequest = new AdRequest.Builder().AddTestDevice("").Build();
// Loading Ad
interstitial.LoadAd(newRequest);
// Ad Completed the load
interstitial.OnAdLoaded += HandleOnAdLoaded;
// Ad Failed the Load
interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad;
// Ad Closed
interstitial.OnAdClosed += HandleOnAdClosed;
}
private void HandleOnAdClosed(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdClosed event received");
}
public void HandleOnAdLoaded(object sender, EventArgs args)
{
MonoBehaviour.print("HandleAdLoaded event received");
}
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
MonoBehaviour.print("Failed to recieve advertisement" + args.Message);
}
public void OnDie()
{
if (interstitial.IsLoaded())
{
interstitial.Show();
}
}
Your answer
Follow this Question
Related Questions
Ads IN-game 1 Answer
How to make an Ad Repeat after 5minutes iOS 0 Answers
Unity Ads show failed: Unity Ads is not initialized 0 Answers
Cant use Advertisement Library 2 Answers
Unity3D Ads SKD 0 Answers