本指南介绍了如何使用 Google 移动广告 Unity 插件的广告 利用展示位置功能为您的应用制作和展示广告。
前提条件
Unity 2017.4 或更高版本。
下载 并导入 GMA Unity 插件的早期版本。
在以下位置设置您的 AdMob 应用 ID: 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%) 您可以取消选中使用全屏宽度选项。
- 在自定义中,您可以提供横幅广告的宽度和高度。
- 锚定自适应横幅广告提供了更多选项:
<ph type="x-smartling-placeholder">
- 广告位置 - 选择应放置横幅广告的位置。
回调
您可以实现与广告回调对应的函数。例如,如果 您想在横幅广告加载失败时处理的问题:
创建与广告回调兼容的函数。
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }
将包含上述函数的脚本附加到 场景。
点击 + 按钮,然后拖动以放下您附加的 GameObject 复制到
选择要关联到广告回调函数的函数。对于 参数化广告回调函数,请选择函数以接受动态 变量,以便您从 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();
...
}
...
}
如果存在名为 BannerAd 的 BannerAdGameObject
,您可以获取
如下所示:
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()
会在加载后被调用
因与广告互动而获得奖励。