如何修复“类型”不包含“显示”的定义,并且找不到扩展方法

时间:2019-04-12 01:31:53

标签: c# unity3d admob

大家好,你好吗?我很好。 我正在尝试为Unity3d游戏货币化编写脚本。 我已经编写了用于初始化Admob广告的脚本,现在正在编写另一个用于加载和显示广告的脚本。我正在关注Admob教程,但是有一些我不知道如何解决的错误。

  

类型'InterstitialAd'不包含带有'1'参数的构造函数

     

类型“ InterstitialAd”不包含“ LoadAd”的定义,并且找不到类型为“ InterstitialAd”的扩展方法“ LoadAd”。您是否缺少装配参考?

     

类型“ InterstitialAd”不包含“ IsLoaded”的定义,并且找不到类型为“ InterstitialAd”的扩展方法“ IsLoaded”。您是否缺少装配参考?

     

类型“ InterstitialAd”不包含“显示”的定义,也找不到类型为“ InterstitialAd”的扩展方法“显示”。您是否缺少装配参考?

似乎我必须编写一个构造函数,并且未定义方法,但是我遵循的是AdMob获利指南的说明,并且假定使用Admob api会加载方法,但不起作用

这是我的代码:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using GoogleMobileAds.Api;

    public class InterstitialAd : MonoBehaviour 
    {
        private InterstitialAd interstitial;
        private string adUnitId;

        private void requestInterstitial() 
        {
            //Los siguientes adUnitId son anuncios de prueba, antes de publicarlo debo reemplazar adUnitId con el id del bloque de anuncios
#if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
            string adUnitId = "unexpected_platform";
#endif

            // Initialize an InterstitialAd. //Id Del bloque de anuncios
            this.interstitial = new InterstitialAd(adUnitId);
            // Use this for initialization
            // Create an empty ad request.
            AdRequest request = new AdRequest.Builder().Build();
            //Load the interstitial with the request interstitial
             this.interstitial.LoadAd(request);
        }

        //ShowAd
        private void showInterstitial() 
        {
            if (Time.time % 45 == 0 && Time.timeSinceLevelLoad > 60 && this.interstitial.IsLoaded()) 
            {
                this.interstitial.Show();
            }
        }
    }

希望您能帮助我!这是发布我的应用程序的最后一步!

1 个答案:

答案 0 :(得分:0)

您自己的课程InterstitialAd : MonoBehaviour与已经存在的GoogleMobileAds.Api.InterstitialAd之间存在名称冲突

所以当你这样做

private InterstitialAd interstitial;

new InterstitialAd(adUnitId);

this.interstitial.LoadAd(request);

this.interstitial.IsLoaded()

this.interstitial.Show();

它总是尝试使用您自己的InterstitialAd : MonoBehaviour类型执行这些操作,而这些类型不会实现那些属性/方法。


您要么必须重命名您的班级,例如

public class IntersitialAdController : MonoBehaviour 
{
    ...
}

如果这样做,请确保文件名也更改为与Behviours名称IntersitialAdController.cs(在驱动器上)完全相同,或者在Unity的.cs视图中不包含Project。 / p>

或者通过各处的完整名称空间访问正确的类型:

private GoogleMobileAds.Api.InterstitialAd interstitial;

new GoogleMobileAds.Api.InterstitialAd(adUnitId);

etc ...