横幅广告和 MREC 广告
在 Unity 游戏中集成 CloudX 横幅广告和 MREC 广告
横幅广告(320x50)
在固定屏幕位置展示的标准横幅广告,支持自动刷新。
using CloudX;
using UnityEngine;
public class BannerExample : MonoBehaviour
{
private const string BannerAdUnitId = "banner_main";
void Start()
{
// Subscribe to callbacks
CloudXAdsCallbacks.Banner.OnAdLoadSuccess += OnBannerLoaded;
CloudXAdsCallbacks.Banner.OnAdLoadFailed += OnBannerLoadFailed;
CloudXAdsCallbacks.Banner.OnAdClicked += OnBannerClicked;
CloudXAdsCallbacks.Banner.OnAdRevenuePaid += OnBannerRevenuePaid;
// Create, load, and show banner
var config = new CloudXAdViewConfiguration(CloudXAdViewConfiguration.AdViewPosition.BottomCenter);
CloudXSdk.CreateBanner(BannerAdUnitId, config);
CloudXSdk.LoadBanner(BannerAdUnitId);
CloudXSdk.ShowBanner(BannerAdUnitId);
}
void OnApplicationFocus(bool hasFocus)
{
if (hasFocus)
{
CloudXSdk.ShowBanner(BannerAdUnitId);
}
else
{
CloudXSdk.HideBanner(BannerAdUnitId);
}
}
private void OnBannerLoaded(CloudXAd ad)
{
Debug.Log($"Banner loaded: {ad.AdUnitId}");
}
private void OnBannerLoadFailed(string adUnitId, CloudXError error)
{
Debug.LogError($"Banner failed to load: {adUnitId} - {error}");
}
private void OnBannerClicked(CloudXAd ad)
{
Debug.Log($"Banner clicked: {ad.AdUnitId}");
}
private void OnBannerRevenuePaid(CloudXAd ad)
{
Debug.Log($"Banner revenue: ${ad.Revenue} from {ad.NetworkName}");
}
}自动刷新控制
横幅广告默认启用自动刷新。如需手动控制刷新:
CloudXSdk.StopBannerAutoRefresh(BannerAdUnitId); // 停止自动刷新
CloudXSdk.LoadBanner(BannerAdUnitId); // 手动加载
CloudXSdk.StartBannerAutoRefresh(BannerAdUnitId); // 重新启用自动刷新广告位和自定义数据
CloudXSdk.SetBannerPlacement(BannerAdUnitId, "home_screen");
CloudXSdk.SetBannerCustomData(BannerAdUnitId, "custom_value");竖向横幅广告(320x50,旋转展示)
竖向横幅广告是标准的 320x50 横幅广告,旋转 90 度后紧贴屏幕左边缘或右边缘展示。广告在所贴边缘上垂直居中,素材顶部朝向屏幕中心。当该边缘存在屏幕开孔(刘海、摄像头开孔、灵动岛)时(横屏下的常见情况),横幅会自动内移避开开孔,确保素材不被遮挡。
这种格式特别适合垂直空间不足、无法放置顶部或底部横幅的横屏游戏:横幅利用屏幕的短边展示,不占用游戏画面的高度。
创建竖向横幅时,使用 AdViewVerticalPosition(而不是 AdViewPosition)构造 CloudXAdViewConfiguration。其余部分(加载、展示、回调 CloudXAdsCallbacks.Banner、自动刷新控制以及 placement/自定义数据)与水平横幅广告基本相同。
// 将横幅紧贴屏幕左边缘(顺时针旋转)
var config = new CloudXAdViewConfiguration(
CloudXAdViewConfiguration.AdViewVerticalPosition.Left);
CloudXSdk.CreateBanner(BannerAdUnitId, config);
CloudXSdk.LoadBanner(BannerAdUnitId);
CloudXSdk.ShowBanner(BannerAdUnitId);AdViewVerticalPosition.Left 将横幅紧贴屏幕左边缘并顺时针旋转;AdViewVerticalPosition.Right 将其紧贴屏幕右边缘并逆时针旋转。
MREC 广告(300x250)
中矩形广告的使用方式与横幅广告相同,但尺寸更大。
using CloudX;
using UnityEngine;
public class MrecExample : MonoBehaviour
{
private const string MrecAdUnitId = "mrec_main";
void Start()
{
// Subscribe to callbacks
CloudXAdsCallbacks.Mrec.OnAdLoadSuccess += OnMrecLoaded;
CloudXAdsCallbacks.Mrec.OnAdLoadFailed += OnMrecLoadFailed;
CloudXAdsCallbacks.Mrec.OnAdClicked += OnMrecClicked;
CloudXAdsCallbacks.Mrec.OnAdRevenuePaid += OnMrecRevenuePaid;
// Create, load, and show MREC
var config = new CloudXAdViewConfiguration(CloudXAdViewConfiguration.AdViewPosition.Centered);
CloudXSdk.CreateMrec(MrecAdUnitId, config);
CloudXSdk.LoadMrec(MrecAdUnitId);
CloudXSdk.ShowMrec(MrecAdUnitId);
}
void OnApplicationFocus(bool hasFocus)
{
if (hasFocus)
{
CloudXSdk.ShowMrec(MrecAdUnitId);
}
else
{
CloudXSdk.HideMrec(MrecAdUnitId);
}
}
private void OnMrecLoaded(CloudXAd ad)
{
Debug.Log($"MREC loaded: {ad.AdUnitId}");
}
private void OnMrecLoadFailed(string adUnitId, CloudXError error)
{
Debug.LogError($"MREC failed to load: {adUnitId} - {error}");
}
private void OnMrecClicked(CloudXAd ad)
{
Debug.Log($"MREC clicked: {ad.AdUnitId}");
}
private void OnMrecRevenuePaid(CloudXAd ad)
{
Debug.Log($"MREC revenue: ${ad.Revenue} from {ad.NetworkName}");
}
}广告位和自定义数据
CloudXSdk.SetMRecPlacement(MrecAdUnitId, "home_screen");
CloudXSdk.SetMRecCustomData(MrecAdUnitId, "custom_value");自动刷新控制
MREC 广告同样默认启用自动刷新。使用与横幅广告相同的刷新控制方法:
CloudXSdk.StopMrecAutoRefresh(MrecAdUnitId);
CloudXSdk.LoadMrec(MrecAdUnitId);
CloudXSdk.StartMrecAutoRefresh(MrecAdUnitId);