在 Unity 中实现横幅广告
横幅广告需要特定类型的专用横幅广告单元。
Note: Starting from SDK version 4.4.1, the Unity Ads package is now called the Advertisement Legacy package in the Unity Editor. The Advertisement Legacy package version 4.12 is still functional but will not receive any further updates for new or enhanced features. SDK version 4.12 supports the Apple Privacy Manifest update, with no further updates planned for the package.
重要: app-ads.txt 是IAB 发起的倡议,旨在打击欺诈并在广告生态系统中建立透明度。请确保您按照说明实施 app-ads.txt。否则,横幅需求可能会大幅下降。
脚本实现
在您的脚本头文件中,声明 UnityEngine.Advertisements
命名空间,其中包含Banner
类。接下来,初始化 SDK,然后使用Banner.Load
和Banner.Show
方法加载和显示横幅广告。
以下示例脚本向您展示如何在场景中设置按钮以测试此功能。要创建 Unity 编辑器中的按钮,请选择游戏对象 > UI > 按钮。
Note: Only load content after the SDK is initialized, otherwise the script will not work. In this example, initialization is handled in a different script.
在 C# 中实现横幅广告
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Advertisements;
public class BannerAdExample : MonoBehaviour
{
// For the purpose of this example, these buttons are for functionality testing:
[SerializeField] Button _loadBannerButton;
[SerializeField] Button _showBannerButton;
[SerializeField] Button _hideBannerButton;
[SerializeField] BannerPosition _bannerPosition = BannerPosition.BOTTOM_CENTER;
[SerializeField] string _androidAdUnitId = "Banner_Android";
[SerializeField] string _iOSAdUnitId = "Banner_iOS";
string _adUnitId = null; // This will remain null for unsupported platforms.
void Start()
{
// Get the Ad Unit ID for the current platform:
#if UNITY_IOS
_adUnitId = _iOSAdUnitId;
#elif UNITY_ANDROID
_adUnitId = _androidAdUnitId;
#endif
// Disable the button until an ad is ready to show:
_showBannerButton.interactable = false;
_hideBannerButton.interactable = false;
// Set the banner position:
Advertisement.Banner.SetPosition(_bannerPosition);
// Configure the Load Banner button to call the LoadBanner() method when clicked:
_loadBannerButton.onClick.AddListener(LoadBanner);
_loadBannerButton.interactable = true;
}
// Implement a method to call when the Load Banner button is clicked:
public void LoadBanner()
{
// Set up options to notify the SDK of load events:
BannerLoadOptions options = new BannerLoadOptions
{
loadCallback = OnBannerLoaded,
errorCallback = OnBannerError
};
// Load the Ad Unit with banner content:
Advertisement.Banner.Load(_adUnitId, options);
}
// Implement code to execute when the loadCallback event triggers:
void OnBannerLoaded()
{
Debug.Log("Banner loaded");
// Configure the Show Banner button to call the ShowBannerAd() method when clicked:
_showBannerButton.onClick.AddListener(ShowBannerAd);
// Configure the Hide Banner button to call the HideBannerAd() method when clicked:
_hideBannerButton.onClick.AddListener(HideBannerAd);
// Enable both buttons:
_showBannerButton.interactable = true;
_hideBannerButton.interactable = true;
}
// Implement code to execute when the load errorCallback event triggers:
void OnBannerError(string message)
{
Debug.Log($"Banner Error: {message}");
// Optionally execute additional code, such as attempting to load another ad.
}
// Implement a method to call when the Show Banner button is clicked:
void ShowBannerAd()
{
// Set up options to notify the SDK of show events:
BannerOptions options = new BannerOptions
{
clickCallback = OnBannerClicked,
hideCallback = OnBannerHidden,
showCallback = OnBannerShown
};
// Show the loaded Banner Ad Unit:
Advertisement.Banner.Show(_adUnitId, options);
}
// Implement a method to call when the Hide Banner button is clicked:
void HideBannerAd()
{
// Hide the banner:
Advertisement.Banner.Hide();
}
void OnBannerClicked() { }
void OnBannerShown() { }
void OnBannerHidden() { }
void OnDestroy()
{
// Clean up the listeners:
_loadBannerButton.onClick.RemoveAllListeners();
_showBannerButton.onClick.RemoveAllListeners();
_hideBannerButton.onClick.RemoveAllListeners();
}
}
横幅位置
默认情况下,横幅广告显示在屏幕底部中心的锚定位置,支持 320 x 50 或 728 x 90 像素分辨率。要指定横幅锚点,请使用 Banner.SetPosition
API。例如
Advertisement.Banner.SetPosition (BannerPosition.TOP_CENTER);