广告展示位置

本指南介绍了如何使用 Google 移动广告 Unity 插件的广告 利用展示位置功能为您的应用制作和展示广告。

前提条件

初始化 Google 移动广告 SDK

加载广告之前,请先调用 MobileAds.Initialize(),带有 Action<InitializationStatus> 回调。这个 只需执行一次,最好是在应用启动时执行。

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize the Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

创建广告展示位置

要通过 Google 移动广告展示横幅广告,首先 配置广告展示位置。你可以选择“横幅广告” 素材资源 > 中的插页式广告或激励广告格式Google 移动广告 >广告 展示位置。然后,三个演示广告展示位置 设置完毕,随时可供使用。

要添加新的广告展示位置,请点击位于页面底部的添加新展示位置按钮 列表。您可以在“检查器”视图中配置广告展示位置。

广告展示位置配置

每个展示位置都具有以下属性:

展示位置名称
展示位置的名称。用于在 场景。
广告格式
横幅广告、激励广告、插页式广告。广告类型。
广告单元 ID
提供适用于 Android 和 iOS 的横幅广告单元 ID。您需要提供 至少一个广告单元 ID。
跨场景持续展示
选中后,无论场景如何,横幅广告都将显示在屏幕上 更改(与 DontDestroyOnLoad)。
已启用自动加载
选中后,当出现与以下视频相关联的场景时,系统会自动加载广告 。

以下屏幕截图显示了名为 My Awesome Banner

向场景中添加 AdGameObject

您可以向横幅广告、插页式广告或激励广告格式中添加 AdGameObject, GameObject >Unity 编辑器中的“Google 移动广告”。选择 格式向活动场景中添加展示位置。

向场景中添加 AdGameObject 后,您会看到一个 GameObject 在 Unity 编辑器的“Hierarchy”视图中显示的广告。

您可以通过更改 GameObject 的名称来更改展示位置的名称。 本身。以下屏幕截图显示了 AdGameObject 的示例 名为 Banner Ad

AdGameObject 设置

您可以通过检查器在场景中配置 AdGameObject 在广告游戏对象(脚本)组件的设置中

广告展示位置

从已配置的展示位置下拉列表中选择广告展示位置。通过 列表中将仅包含正确格式的广告单元。例如,对于横幅广告 游戏对象,下拉菜单中将仅显示已配置的横幅广告展示位置。

BannerAdGameObject 配置(仅限横幅广告)

  • 尺寸 - 选择您要使用的横幅广告的尺寸。
    • 锚定自适应横幅广告提供了更多选项: <ph type="x-smartling-placeholder">
        </ph>
      • 屏幕方向 - 选择用于计算广告的设备屏幕方向 高度。
      • Use full screen width - 选中后,横幅广告会占据 全屏宽度。在下列情况下,您可以调整屏幕的宽度百分比 (50~99%) 您可以取消选中使用全屏宽度选项。
    • 自定义中,您可以提供横幅广告的宽度和高度。
  • 广告位置 - 选择应放置横幅广告的位置。

回调

您可以实现与广告回调对应的函数。例如,如果 您想在横幅广告加载失败时处理的问题:

  1. 创建与广告回调兼容的函数。

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. 将包含上述函数的脚本附加到 场景。

  3. 点击 + 按钮,然后拖动以放下您附加的 GameObject 复制到

  4. 选择要关联到广告回调函数的函数。对于 参数化广告回调函数,请选择函数以接受动态 变量,以便您从 SDK 获取参数值。

使用脚本中的 AdGameObject

从脚本中获取 AdGameObject 实例

所有 AdGameObject 对象都具有便捷方法 LoadAd()。这将加载 包含普通、未定位的 AdRequest 的广告。要应用定位条件,您应该使用 LoadAd(AdRequest adRequest)

要获取 AdGameObject 的实例,请对每种格式使用以下方法:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

返回的 BannerAdGameObject 对象还具有便捷方法。 Hide()Show()

插页式广告

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

返回的 InterstitialAdGameObject 对象有一个便捷方法 ShowIfLoaded()

激励广告

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

返回的 RewardedAdGameObject 对象有一个便捷方法 ShowIfLoaded()

例如,您可以获取 BannerAdGameObject 的实例并将其加载为 如下:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

如果存在名为 BannerAdBannerAdGameObject,您可以获取 如下所示:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

访问 AdGameObject 中的底层广告对象

这些代码段演示了如何访问 AdGameObject。

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

插页式广告

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

激励广告

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

示例

展示插页式广告

以下示例展示了如何配置游戏以加载和展示插页式广告 来加载广告

向场景中添加 InterstitialAdGameObject,并开启 Auto Load(自动加载) 启用功能,以便在场景加载时自动加载广告。

接下来,确保您已使用以下代码初始化 SDK。请注意,Auto SDK。

然后,通过调用 InterstitialAdGameObject.ShowIfLoaded() 函数。以下代码展示了一个 在场景转换间隙展示插页式广告的示例。

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

由于您在广告展示位置中启用了自动加载功能,因此无需执行以下操作: 需要明确请求广告当场景转换时,插页式广告 显示的信息

如果您想手动请求广告,请在以下位置停用自动加载功能: 并调用 InterstitialAdGameObject.LoadAd() 函数。以下代码段展示了如何手动请求 。

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

处理“观看激励广告”按钮状态

下面是如何启用“观看激励广告”的示例按钮(使用广告) 展示位置。

向场景中添加一个 Button GameObject(在本例中名为 Button), 将用于展示激励广告。我们会将此按钮设为仅可使用 当有激励广告可用时。

Start() 方法中,将 Button 的有效状态更改为 false。这个 会使按钮从场景中消失。

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

向场景中添加 RewardedAdGameObject,然后选择 AdMob 演示激励广告 广告 广告展示位置。

RewardedAdGameObject 检查器的“Callbacks”部分下,点击 On Ad Loaded() 中的 + 按钮,以启用要调用的函数 当激励广告加载完毕时触发。

将您在上一步中添加的 Button GameObject 拖放到 None (Object) 字段。从下拉菜单中选择要调用的函数。 点击无函数 >GameObject >SetActive(bool),然后点击相应复选框, 它会将 true 作为参数发送(调用 SetActive(true))。

在此“回调”部分,您还可以关联将被调用的事件 在 RewardedAd.OnUserEarnedReward 事件触发时触发。如需了解更多详情, 请参阅此部分

接下来,将该按钮设置为在用户点击时展示激励广告。从 Click()“Callbacks”部分,点击 + 按钮,然后 将激励广告展示位置 GameObject(名为 激励广告)拖放到此 None (Object) 字段。

然后,将 RewardedAdGameObject.ShowIfLoaded() 函数附加到按钮的 在 Click() 回调上回调。

最后,别忘了初始化 SDK。以下代码段是 本示例中使用的场景的完整代码:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

运行项目后, 激励广告已加载完毕并准备好展示

为 RewardedAdGameObject 配置奖励回调

以下示例展示了如何配置对激励广告的激励广告回调 因此您可以在调用回调函数时向用户提供奖励 调用。

创建一个新脚本并定义一个接受 Reward 作为参数的函数 ,如下所示。

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

RewardedTestScript 脚本附加到任何 GameObject(广告除外) Placement GameObject)。在此示例中,它连接到 Main Camera GameObject。

向场景添加 RewardedAdGameObject。然后,在“Callbacks”(回调)部分下 在 RewardedAdGameObject 检查器中,点击 On User 页面上的 + 按钮 所获奖励 (Reward),可在用户获得奖励时调用函数 授予某个用户的权限。

拖放您之前添加的主镜头 GameObject None (Object) 字段。选择要从 下拉菜单。点击无函数 >RewardedTestScript >OnUserMonetizeedReward

运行项目并观看激励广告后, RewardedTestScript.OnUserEarnedReward() 会在加载后被调用 因与广告互动而获得奖励。