Unity - Admob隐藏横幅不起作用

时间:2016-11-13 17:43:08

标签: c# unity3d admob hide banner

当我进入下一个名为''Main'的场景时,为什么我的admob横幅不隐藏? 我做了其他人在其他线程上所说的一切......

这是我的代码:

using GoogleMobileAds.Api;  

public class AdmobAds : MonoBehaviour {

private BannerView bannerView;


    private void RequestBanner()
    {
        #if UNITY_ANDROID
        string adUnitId = "ca-app-pub-xxxxxxxxxxxxxxxxxx";
        #elif UNITY_IPHONE
        string adUnitId = "INSERT_IOS_BANNER_AD_UNIT_ID_HERE";
        #else
        string adUnitId = "unexpected_platform";
        #endif

        // Create a 320x50 banner at the top of the screen.
        BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);
        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the banner with the request.
        bannerView.LoadAd(request);
    }

    public void HideAd()
    {
        bannerView.Destroy ();
        bannerView.Hide ();
    }

    void Start()
    {
        Scene currentScene = SceneManager.GetActiveScene ();
        string sceneName = currentScene.name;

        if (sceneName == "Menu") 
        {
            RequestBanner ();
        }

        else if (sceneName == "Main") 
        {
            bannerView.Destroy ();
            bannerView.Hide ();
        }
    }
}

此外,''public void HideAd'被附加到开始按钮,但它仍然没有隐藏横幅..

我该怎么办?

1 个答案:

答案 0 :(得分:1)

问题出在RequestBanner函数:

BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);

bannerView是一个局部变量,新的BannerView实例将存储到该本地bannerView变量,而不是全局bannerView变量。

您需要将BannerView实例存储在全局bannerView变量中。

应该改为:

bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom);

另一个问题是:

public void HideAd()
{
    bannerView.Destroy ();
    bannerView.Hide ();
}

在隐藏bannerView之前,你正在摧毁它。它应该是相反的方式。您应该Hide然后Destroy bannerView。事实上,简单地隐藏bannerView应该没问题。您没有Destroy它。