From 5851c170db4041535663abee8d854b912c459aec Mon Sep 17 00:00:00 2001 From: luojian Date: Tue, 2 Sep 2025 10:56:23 +0800 Subject: [PATCH] =?UTF-8?q?native=E4=BD=8D=E7=BD=AE=E9=87=8D=E5=86=99?= =?UTF-8?q?=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Script/Common/IAdService.cs | 4 +- .../SDKManager/AdsSDKManager/Utils/PX2DP.cs | 60 +++++++++++++++++++ .../AdsSDKManager/Utils/PX2DP.cs.meta | 3 + Assets/Script/Test.cs | 2 +- 4 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 Assets/Script/SDKManager/AdsSDKManager/Utils/PX2DP.cs create mode 100644 Assets/Script/SDKManager/AdsSDKManager/Utils/PX2DP.cs.meta diff --git a/Assets/Script/Common/IAdService.cs b/Assets/Script/Common/IAdService.cs index 0374026..4b8741b 100644 --- a/Assets/Script/Common/IAdService.cs +++ b/Assets/Script/Common/IAdService.cs @@ -214,8 +214,8 @@ namespace WZ var tHeight = Mathf.Abs(tBottomRight.y - tTopLeft.y); return new NativeAdPosition { - X = (int)tTopLeft.x, - Y = (int)(Screen.height - tTopLeft.y), + X = PX2DP.PxToDp(tTopLeft.x), + Y = PX2DP.PxToDp(Screen.height - tTopLeft.y), Width = (int)tWidth, Height = (int)tHeight, NativeTemplateStyle = nativeTemplateStyle diff --git a/Assets/Script/SDKManager/AdsSDKManager/Utils/PX2DP.cs b/Assets/Script/SDKManager/AdsSDKManager/Utils/PX2DP.cs new file mode 100644 index 0000000..d3689f9 --- /dev/null +++ b/Assets/Script/SDKManager/AdsSDKManager/Utils/PX2DP.cs @@ -0,0 +1,60 @@ +using UnityEngine; + +namespace WZ +{ + public class PX2DP + { +#if UNITY_ANDROID && !UNITY_EDITOR + private static AndroidJavaClass _unityPlayerClass; + private static AndroidJavaObject _currentActivity; + private static AndroidJavaObject _resources; + private static AndroidJavaObject _displayMetrics; + + // 初始化Android相关类引用 + private static void Init() + { + if (_unityPlayerClass == null) + { + _unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); + _currentActivity = _unityPlayerClass.GetStatic("currentActivity"); + _resources = _currentActivity.Call("getResources"); + _displayMetrics = _resources.Call("getDisplayMetrics"); + } + } +#endif + + /// + /// Android平台dp转px + /// + /// 需要转换的dp值 + /// 转换后的px值 + public static int DpToPx(float dp) + { +#if UNITY_ANDROID && !UNITY_EDITOR + Init(); + float scale = _displayMetrics.Get("density"); + return (int)(dp * scale + 0.5f); +#else + // 非Android平台返回近似值 + return Mathf.RoundToInt(dp * Screen.dpi / 160f); +#endif + } + + /// + /// Android平台px转dp + /// + /// 需要转换的px值 + /// 转换后的dp值 + public static int PxToDp(float px) + { +#if UNITY_ANDROID && !UNITY_EDITOR + Init(); + float scale = _displayMetrics.Get("density"); + return (int)(px / scale + 0.5f); +#else + // 非Android平台返回近似值 + return Mathf.RoundToInt(px * 160f / Screen.dpi); +#endif + } + } +} \ No newline at end of file diff --git a/Assets/Script/SDKManager/AdsSDKManager/Utils/PX2DP.cs.meta b/Assets/Script/SDKManager/AdsSDKManager/Utils/PX2DP.cs.meta new file mode 100644 index 0000000..0a45d40 --- /dev/null +++ b/Assets/Script/SDKManager/AdsSDKManager/Utils/PX2DP.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 670d28df645a4752b53d6a5d9441c429 +timeCreated: 1756780215 \ No newline at end of file diff --git a/Assets/Script/Test.cs b/Assets/Script/Test.cs index 306a7cf..dfe5900 100644 --- a/Assets/Script/Test.cs +++ b/Assets/Script/Test.cs @@ -29,7 +29,7 @@ public class Test : MonoBehaviour { TemplateId = NativeTemplateId.Small }, small); - Debug.Log($"luojian admob native ad start show {small} medium {medium} X:{nativeAdPosition.X} Y:{nativeAdPosition.Y} Height :{nativeAdPosition.Height} Width:{nativeAdPosition.Width}"); + Debug.Log($"luojian admob native ad start show {small} medium {medium} X:{nativeAdPosition.X} Y:{nativeAdPosition.Y} Height :{nativeAdPosition.Height} Width:{nativeAdPosition.Width} Screen.dpi = {3.5}"); if (AdsSDKManager.Instance.IsNativeAdReady("ca-app-pub-3940256099942544/2247696110")) { // var nativeAdPosition = NativeAdPosition.Create(new NativeTemplateStyle