UDN
Search public documentation:
InGameAdsCH
English Translation
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
日本語訳
한국어
Interested in the Unreal Engine?
Visit the Unreal Technology site.
Looking for jobs and company info?
Check out the Epic games site.
Questions about support via UDN?
Contact the UDN Staff
游戏中的广告
概述
广告管理器
InGameAdManager
,它通过iAd网络来负责管理和显示游戏内的广告。这个类处理所有同获得、显示游戏广告及和游戏广告进行交互相关所有功能。
属性
- bShouldPauseWhileAdOpen - 如果该项为TRUE,那么当用户点击广告时,游戏将暂停,广告会显示在屏幕上面。
- Init - 当引擎处理广告系统初始化时调用的事件。
- ShowBanner [bShowBottomOfScreen] - 在一个横幅中显示游戏广告。
- bShowBottomOfScreen - 如果该项为TRUE,那么横幅将显示在屏幕的底部。否则,横幅将显示在屏幕的顶部。
- HideBanner - 隐藏任何可见的游戏广告横幅。如果广告当前是打开的(也就是,用户正在和广告交互),那么将会强制关闭广告(请参照ForceCloseAd)。
- ForceCloseAd - 强制关闭打开(点击过)的广告并返回到横幅状态。这将会导致收入损失,所以除非必要否则不要这样做。
- SetPauseWhileAdOpen [bShouldPause] -设置当点击广告时游戏是否暂停。
- bShouldPause - 如果该项为TRUE,那么当点击广告时游戏将会暂停。否则,游戏将会继续运行。
ECloudStorageDelegate
枚举值定义了可以接受函数调用的代理类型的ID。通过使用 平台接口代理系统来为这些类型中的任何一种分配代理。
- AMD_ClickedBanner - 当用户点击横幅广告时,执行分配给这个ID的代理。
- bSuccessful - TRUE。
- Data - 不包含数据。
- AMD_UserClosedAd - 当用户关闭广告(点击横幅之后)时执行分配给该ID的代理。基类已经处理了取消暂停动作,所以如果您需要额外处理仅需要一个代理。
- bSuccessful - TRUE。
- Data - 不包含数据。
实现
PlayerController
类的 PostBeginPlay()
函数中,可以分配相关代理并且可以显示横幅。当然,这仅用于您想让横幅自关卡或游戏开始运行就显示的情况。任何需要的时候,您可以在 InGameAdManager
上调用相关功能来显示或隐藏广告。
PlatformInterfaceBase
有一个静态函数,它将返回到当前 InGameAdManager
的引用。您可以在 PlayerController
中使用这个函数来获得到它的引用并调用它的函数。请记住除非游戏在支持游戏广告的平台上运行否则这个函数将返回 None
。
设置
这里,我们从 PlatformInterfaceBase
获得了到 InGameAdManager
的引用,然后添加我们的delegate(代理)并显示广告横幅。我们已经添加的代理只是一些示例,说明了在适当的时机确实会执行这些代理。
var InGameAdManager AdManager; ... simulated function PostBeginPlay() { Super.PostBeginPlay(); AdManager = class'PlatformInterfaceBase'.static.GetInGameAdManager(); if (AdManager != none) { AdManager.AddDelegate(AMD_ClickedBanner, OnUserClickedAdvertisement); AdManager.AddDelegate(AMD_UserClosedAd, OnUserClosedAdvertisement); AdManager.ShowBanner(true); } } /** * Called on all player controllers when an in-game advertisement has been clicked * on by the user. Game will probably want to pause, etc, at this point */ function OnUserClickedAdvertisement(const out PlatformInterfaceDelegateResult Result) { `log("MobilePC::OnUserClickedBanner"); } /** * Called on all player controllers when an in-game advertisement has been closed * down (usually when user clicks Done or similar). Game will want to unpause, etc here. */ event OnUserClosedAdvertisement(const out PlatformInterfaceDelegateResult Result) { `log("MobilePC::OnUserClosedAd"); }
PlayerController
的 Destroyed()
事件允许我们做一些清除处理,比如删除我们之前分配的任何代理。
event Destroyed() { super.Destroyed(); if (AdManager != none) { AdManager.ClearDelegate(AMD_ClickedBanner, OnUserClickedAdvertisement); AdManager.ClearDelegate(AMD_UserClosedAd, OnUserClosedAdvertisement); } }
PlayerController
类中具有上述代码的游戏将会导致广告横幅显示在屏幕的底部。
点击横幅将会打开完整的广告:
显然,您在这个阶段仅看到了测试广告,正如在上面图像中所看到的。您将需要加入 iAd Network来接受真实的广告。这可以通过Apple开发者网站来完成。