通常需要导入Google Mobile Ads SDK,设置应用ID,然后创建广告实例,比如横幅广告、插页式广告或激励广告。测试代码的话,应该包括初始化SDK,加载广告,显示广告这几个基本步骤。

用户可能希望代码简单明了,直接复制粘贴就能用,所以结构要清晰。同时,测试广告需要用到测试广告单元ID,比如Google提供的样本ID,比如横幅用"ca-app-pub-3940256099942544/6300978111",插页式用"ca-app-pub-3940256099942544/1033173712"。这些ID在官方文档中有提到,用户可能已经知道,但为了确保代码可用,必须包含这些测试ID。

然后,代码结构方面,应该是一个MonoBehaviour脚本,挂载到场景中的某个对象上,比如主摄像机或者一个空对象。Start方法里初始化SDK,然后创建广告实例,设置事件监听,比如加载成功或失败的回调,然后调用LoadAd()。

还需要考虑不同广告类型,用户可能需要多个示例,比如同时展示横幅和插页式广告。但用户只要一段测试代码,可能先以横幅为例,或者两者都包含。另外,注意广告的位置,比如BannerView可以设置在底部,代码中需要指定AdPosition.Bottom。

另外,需要提醒用户替换测试ID为实际ID,虽然测试阶段可以用样本ID,但正式发布时必须更换。同时,可能需要处理不同平台,比如Android和iOS,设置不同的应用ID。代码中应该包含条件编译,判断UNITY_ANDROID或UNITY_IOS,分别设置对应的应用ID。

还要考虑错误处理,比如广告加载失败时的回调,可以在日志中输出信息,方便用户调试。比如在HandleBannerAdFailedToLoad事件中打印错误信息。

另外,广告加载后可能需要手动调用Show()方法,比如插页式广告加载成功后,用户可能希望在某个时机显示,比如在Start里面直接调用显示,但实际应用中可能需要根据游戏逻辑触发。测试代码的话,可能加载成功后自动显示,或者通过按钮触发。

最后,需要提醒用户关于权限和配置,比如AndroidManifest.xml或Info.plist中的设置,以及Google Mobile Ads的设置面板中导入必要的配置。可能用户忘记这些步骤,导致广告无法加载,所以注释中要提到这些注意事项。

总结下来,代码应该包括:

1. 导入必要的命名空间,如GoogleMobileAds.Api。

2. MonoBehaviour脚本,初始化MobileAds。

3. 创建广告实例,设置测试ID。

4. 注册事件监听器。

5. 加载广告,并在适当的时候显示。

6. 处理不同平台的应用ID。

7. 添加注释说明需要替换的ID和配置步骤。

可能用户遇到的常见问题包括:未初始化SDK,广告ID错误,平台配置不正确,或者没有正确处理回调事件。测试代码应尽量覆盖这些点,确保用户能顺利运行看到广告。

现在把这些思考整理成代码,并加上必要的注释,确保用户能够理解每一步的作用。同时,代码要简洁,方便用户直接使用。

以下是一个简单的 Unity AdMob 测试代码示例,包含横幅广告和插页式广告的初始化与加载逻辑:

using UnityEngine;
using GoogleMobileAds.Api;
using UnityEngine.UI;

public class AdMobTest : MonoBehaviour
{
    private BannerView bannerView;
    private InterstitialAd interstitialAd;

    [SerializeField] private Button showInterstitialButton;

    void Start()
    {
        // 初始化 AdMob SDK
        MobileAds.Initialize(initStatus => 
        {
            Debug.Log("AdMob SDK initialized");
            LoadBannerAd();
            LoadInterstitialAd();
        });

        // 按钮点击事件
        showInterstitialButton.onClick.AddListener(ShowInterstitialAd);
    }

    #region Banner Ad
    void LoadBannerAd()
    {
        // 测试用横幅广告ID(正式发布需要替换)
        string adUnitId = "ca-app-pub-3940256099942544/6300978111";

        // 创建横幅广告实例
        bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);

        // 注册广告事件回调
        bannerView.OnBannerAdLoaded += () => Debug.Log("Banner loaded");
        bannerView.OnBannerAdLoadFailed += (error) => 
            Debug.LogError("Banner failed to load: " + error.GetMessage());

        // 加载广告
        AdRequest request = new AdRequest.Builder().Build();
        bannerView.LoadAd(request);

        // 默认显示横幅
        bannerView.Show();
    }
    #endregion

    #region Interstitial Ad
    void LoadInterstitialAd()
    {
        // 测试用插页广告ID
        string adUnitId = "ca-app-pub-3940256099942544/1033173712";

        // 清理旧广告
        if (interstitialAd != null)
        {
            interstitialAd.Destroy();
            interstitialAd = null;
        }

        // 创建新广告实例
        interstitialAd = new InterstitialAd(adUnitId);

        // 注册广告事件
        interstitialAd.OnAdLoaded += (sender, args) => 
        {
            Debug.Log("Interstitial loaded");
            showInterstitialButton.interactable = true;
        };
        interstitialAd.OnAdClosed += (sender, args) => 
        {
            Debug.Log("Interstitial closed");
            LoadInterstitialAd(); // 关闭后重新加载
        };

        // 加载广告
        AdRequest request = new AdRequest.Builder().Build();
        interstitialAd.LoadAd(request);
    }

    void ShowInterstitialAd()
    {
        if (interstitialAd.IsLoaded())
        {
            showInterstitialButton.interactable = false;
            interstitialAd.Show();
        }
        else
        {
            Debug.Log("Interstitial not ready yet");
        }
    }
    #endregion
}

使用说明:

  1. 前置条件:

    • 安装 Google Mobile Ads Unity Package(通过 Package Manager)

    • 在 Google Mobile Ads 设置面板填写你的 App ID

    • 将脚本挂载到场景中的 GameObject 上

    • 在 Inspector 中为 showInterstitialButton 赋值一个 UI 按钮

  2. 测试广告 ID:

    • 使用示例中的测试 ID 可以在开发阶段显示测试广告

    • 正式发布前需要替换为你的真实广告单元 ID

  3. 功能说明:

    • 自动加载并显示横幅广告(底部位置)

    • 点击按钮显示插页式广告

    • 广告加载失败时会在控制台显示错误信息

    • 插页广告关闭后会自动重新加载

  4. 平台设置:

    • Android:需要 AndroidManifest.xml 添加必要权限

    • iOS:需要在 Info.plist 中添加 GADApplicationIdentifier

注意事项:

  • 确保网络连接正常

  • 真实广告需要发布到商店后才能正常显示

  • 频繁请求测试广告可能导致临时封禁,请勿滥用

你可以在 Unity Editor 中运行测试,但实际广告效果需要在真机设备上查看。建议同时处理广告加载失败的情况并添加加载指示器(示例中未包含)。

更多推荐