Unity自适应横幅高度获取异常:如何获取设备真实高度
Unity获取自适应横幅真实高度的解决方案
核心问题:调用时机错误
不要在横幅调用Show()后立即获取高度,广告加载、渲染和布局需要时间,必须等横幅完全加载并显示完成后再获取,否则拿到的是默认值或0。
正确实现步骤
1. 利用广告SDK的加载完成回调
几乎所有主流广告SDK(如AdMob、Unity Ads)都提供了横幅加载/显示完成的回调事件,在回调中执行高度获取逻辑才是可靠的。
以AdMob为例的代码示例:
using GoogleMobileAds.Api; using UnityEngine; public class BannerAdManager : MonoBehaviour { private BannerView _bannerView; void Start() { InitializeAdaptiveBanner(); } private void InitializeAdaptiveBanner() { string adUnitId = "你的广告单元ID"; // 创建自适应横幅,适配当前屏幕宽度和方向 AdSize adaptiveSize = AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth); _bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom); // 注册加载完成回调 _bannerView.OnAdLoaded += OnBannerLoaded; // 请求加载广告 AdRequest request = new AdRequest.Builder().Build(); _bannerView.LoadAd(request); } private void OnBannerLoaded(object sender, System.EventArgs args) { // 此时横幅已完成渲染,获取DP单位的高度 float bannerHeightDp = _bannerView.GetHeight(); // 转换为Unity像素单位(DP转像素公式:像素 = DP * 屏幕DPI / 160) float bannerHeightPixels = bannerHeightDp * Screen.dpi / 160f; // 用获取到的高度调整游戏UI布局,比如上移主画布避免被遮挡 RectTransform mainCanvas = GameObject.Find("MainGameCanvas").GetComponent<RectTransform>(); mainCanvas.anchoredPosition = new Vector2(0, bannerHeightPixels / 2); } }
2. 直接获取横幅UI的RectTransform尺寸
如果横幅是作为Unity UI元素存在的,在其激活并完成布局后,可以直接读取RectTransform的高度:
// 确保横幅对象已激活且布局完成 GameObject bannerObj = GameObject.Find("AdBanner"); if (bannerObj.activeSelf) { RectTransform bannerRect = bannerObj.GetComponent<RectTransform>(); float realHeight = bannerRect.rect.height; // 后续布局调整逻辑 }
3. 处理屏幕方向变化
自适应横幅在横竖屏切换时高度会改变,需要监听屏幕方向变化,重新获取高度并更新布局:
void OnRectTransformDimensionsChange() { // 屏幕尺寸变化时,重新获取横幅高度 if (_bannerView != null && _bannerView.IsLoaded()) { float bannerHeightDp = _bannerView.GetHeight(); float bannerHeightPixels = bannerHeightDp * Screen.dpi / 160f; // 更新UI布局 } }
避坑要点
- 不要依赖"不超过屏幕15%"的经验值,必须以实际获取到的真实高度为准。
- 注意单位转换:广告SDK返回的高度通常是DP单位,必须转换成Unity的像素单位再用于布局调整。
- 测试时要覆盖不同分辨率、屏幕比例的设备,确保适配逻辑生效。
内容的提问来源于stack exchange,提问作者Tobias S. Lucian
相关产品推荐
相关产品推荐

