diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity
index 1b674dd..621fa24 100644
--- a/Assets/Scenes/GameScene.unity
+++ b/Assets/Scenes/GameScene.unity
@@ -13,7 +13,7 @@ OcclusionCullingSettings:
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
- serializedVersion: 10
+ serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
@@ -38,12 +38,12 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
- m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
+ m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
@@ -66,6 +66,9 @@ LightmapSettings:
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
+ m_FinalGather: 0
+ m_FinalGatherFiltering: 1
+ m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 0
@@ -645,6 +648,8 @@ RectTransform:
m_Children:
- {fileID: 231270963}
- {fileID: 2018301549}
+ - {fileID: 1979832641}
+ - {fileID: 1439137377}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -664,6 +669,81 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8a53fe0e9eb9de04e86fd13d32d89b42, type: 3}
m_Name:
m_EditorClassIdentifier:
+--- !u!1 &1439137376
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1439137377}
+ - component: {fileID: 1439137379}
+ - component: {fileID: 1439137378}
+ m_Layer: 5
+ m_Name: NativeAd-medium
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1439137377
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1439137376}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1332931146}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: -334.5}
+ m_SizeDelta: {x: 0, y: 669}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1439137378
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1439137376}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.98039216, g: 0.99607843, b: 0.45882353, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1439137379
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1439137376}
+ m_CullTransparentMesh: 1
--- !u!1 &1715967757
GameObject:
m_ObjectHideFlags: 0
@@ -743,6 +823,81 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1715967757}
m_CullTransparentMesh: 1
+--- !u!1 &1979832640
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1979832641}
+ - component: {fileID: 1979832643}
+ - component: {fileID: 1979832642}
+ m_Layer: 5
+ m_Name: NativeAd-small
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1979832641
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1979832640}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1332931146}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: 0, y: 134.5}
+ m_SizeDelta: {x: 0, y: 269}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1979832642
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1979832640}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.98039216, g: 0.99607843, b: 0.45882353, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1979832643
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1979832640}
+ m_CullTransparentMesh: 1
--- !u!1 &2018301548
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/Script/Common/IAdService.cs b/Assets/Script/Common/IAdService.cs
index 8169e4a..0374026 100644
--- a/Assets/Script/Common/IAdService.cs
+++ b/Assets/Script/Common/IAdService.cs
@@ -1,6 +1,8 @@
using System;
using GoogleMobileAds.Api;
-using UnityEditor.Media;
+using UnityEngine;
+
+// using UnityEditor.Media;
namespace WZ
{
@@ -134,23 +136,23 @@ namespace WZ
///
/// 检查原生广告是否可用
///
- bool IsNativeAvailable();
+ bool IsNativeAvailable(string adUnitId);
///
/// 显示原生广告
///
/// 广告位置和尺寸信息
- void DisplayNative(NativeAdPosition position);
+ void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position);
///
/// 移除原生广告
///
- void RemoveNative();
+ void RemoveNative(string adUnitId);
///
/// 获取原生广告收益信息
///
- double GetNativeRevenue();
+ double GetNativeRevenue(string adUnitId);
#endregion
}
@@ -199,6 +201,26 @@ namespace WZ
public int Height;
public NativeTemplateStyle NativeTemplateStyle;
+
+
+ public static NativeAdPosition Create(NativeTemplateStyle nativeTemplateStyle,RectTransform pRect, Camera pCam = null)
+ {
+ var tWorldCorners = new Vector3[4];
+ pRect.GetWorldCorners(tWorldCorners);
+
+ var tTopLeft = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[1]);
+ var tBottomRight = RectTransformUtility.WorldToScreenPoint(pCam, tWorldCorners[3]);
+ var tWidth = Mathf.Abs(tBottomRight.x - tTopLeft.x);
+ var tHeight = Mathf.Abs(tBottomRight.y - tTopLeft.y);
+ return new NativeAdPosition
+ {
+ X = (int)tTopLeft.x,
+ Y = (int)(Screen.height - tTopLeft.y),
+ Width = (int)tWidth,
+ Height = (int)tHeight,
+ NativeTemplateStyle = nativeTemplateStyle
+ };
+ }
}
[System.Serializable]
diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs
index 4f5954a..dfb0dbb 100644
--- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs
+++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobAdsManager.cs
@@ -37,17 +37,23 @@ namespace WZ
public void Initialize()
{
if (_initialized) return;
+ _initialized = true;
MobileAds.RaiseAdEventsOnUnityMainThread = true;
-
+ //
MobileAds.Initialize(initStatus =>
{
if (_bannerAdUnits.Count > 0) LoadBanner();
if (_interstitialAdUnits.Count > 0) LoadInterstitial();
if (_rewardedAdUnits.Count > 0) LoadRewarded();
if(_splashAdUnits.Count > 0) AdsSplashManager.Instance.InitSplash();
- _initialized = true;
LoggerUtils.Debug("[Admob] init success");
- });
+ });
+
+ _nativeAdUnits.Add("ca-app-pub-3940256099942544/2247696110");
+ if (_nativeAdUnits.Count > 0)
+ {
+ LoadNative();
+ }
}
public void RefreshAdsData()
@@ -294,24 +300,31 @@ namespace WZ
#region 原生广告功能
public void LoadNative()
{
- }
- public double GetNativeRevenue()
- {
- return 0;
- }
- public void DisplayNative(NativeAdPosition position)
- {
-
+ _admobNativeAdManager?.Destroy();
+ _admobNativeAdManager = new AdmobNativeAdManager();
+ _admobNativeAdManager.InitializeAdUnits(
+ _nativeAdUnits
+ );
}
- public bool IsNativeAvailable()
+ public bool IsNativeAvailable(string adUnitId)
{
- return false;
+ return _admobNativeAdManager.IsAdAvailable(adUnitId);
}
- public void RemoveNative()
+ public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position)
{
+ _admobNativeAdManager.ShowAd(position, adUnitId);
+ }
+ public void RemoveNative(string adUnitId)
+ {
+ _admobNativeAdManager.RemoveNative(adUnitId);
+ }
+
+ public double GetNativeRevenue(string adUnitId)
+ {
+ return _admobBannerAdManager.GetAdRevenue(adUnitId);
}
#endregion
diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs
index 2121e2a..2f62d03 100644
--- a/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs
+++ b/Assets/Script/SDKManager/AdsSDKManager/AdmobAdsManager/AdmobNativeAdManager.cs
@@ -39,9 +39,14 @@ namespace WZ
NativeOverlayAd.Load(adUnitId, new AdRequest(), new NativeAdOptions(), (NativeOverlayAd ad, LoadAdError error) =>
{
+ LoggerUtils.Debug($"[Admob] Native Ad unit {adUnitId} loaded {ad} error {error}");
if (error != null || ad == null)
{
- _retryCounters[adUnitId]++;
+ if (!_retryCounters.TryAdd(adUnitId, 0))
+ {
+ _retryCounters[adUnitId]++;
+ }
+
var retryDelay = Math.Pow(2, Math.Min(6, _retryCounters[adUnitId]));
TimerUtils.Instance.DelayExecute((float)retryDelay, () => { LoadAd(adUnitId); });
LoggerUtils.Debug("[Admob] Native ad failed to load an ad with error : " + error + " \n retryDelay :" + retryDelay);
@@ -119,7 +124,7 @@ namespace WZ
// 检查特定广告位是否可用
- private bool IsAdAvailable(string adUnitId)
+ public bool IsAdAvailable(string adUnitId)
{
return _nativeAds.TryGetValue(adUnitId, out _);
}
diff --git a/Assets/Script/SDKManager/AdsSDKManager/AdsSDKManager.cs b/Assets/Script/SDKManager/AdsSDKManager/AdsSDKManager.cs
index 308af49..ac0b9f8 100644
--- a/Assets/Script/SDKManager/AdsSDKManager/AdsSDKManager.cs
+++ b/Assets/Script/SDKManager/AdsSDKManager/AdsSDKManager.cs
@@ -179,23 +179,23 @@ namespace WZ
#region 原生广告
- public bool IsNativeAdReady()
+ public bool IsNativeAdReady(string adUnitId)
{
- return AdmobAdsManager.Instance.IsNativeAvailable();
+ return AdmobAdsManager.Instance.IsNativeAvailable(adUnitId);
}
- public void ShowNativeAd(NativeAdPosition position)
+ public void ShowNativeAd(string _adPos, string adUnitId, NativeAdPosition position)
{
- if (IsNativeAdReady())
+ if (IsNativeAdReady(adUnitId))
{
- AdmobAdsManager.Instance.DisplayNative(position);
+ AdmobAdsManager.Instance.DisplayNative(_adPos, adUnitId, position);
AdPlayCountManager.IncrementAdPlayCount(AdsType.Native);
}
}
- public void RemoveNativeAd()
+ public void RemoveNativeAd(string adUnitId)
{
- AdmobAdsManager.Instance.RemoveNative();
+ AdmobAdsManager.Instance.RemoveNative(adUnitId);
}
#endregion
diff --git a/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoAdsManager.cs
index dd4f631..2b9a721 100644
--- a/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoAdsManager.cs
+++ b/Assets/Script/SDKManager/AdsSDKManager/BigoAdsManager/BigoAdsManager.cs
@@ -217,10 +217,25 @@ namespace WZ
#region 原生广告功能
public void LoadNative() { }
- public bool IsNativeAvailable() { return false; }
- public void DisplayNative(NativeAdPosition position) { }
- public void RemoveNative() { }
- public double GetNativeRevenue() { return 0; }
+ public bool IsNativeAvailable(string adUnitId)
+ {
+ return false;
+ }
+
+ public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position)
+ {
+
+ }
+
+ public void RemoveNative(string adUnitId)
+ {
+
+ }
+
+ public double GetNativeRevenue(string adUnitId)
+ {
+ return 0;
+ }
#endregion
diff --git a/Assets/Script/SDKManager/AdsSDKManager/MaxAdsManager/MaxAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/MaxAdsManager/MaxAdsManager.cs
index dc985db..a623893 100644
--- a/Assets/Script/SDKManager/AdsSDKManager/MaxAdsManager/MaxAdsManager.cs
+++ b/Assets/Script/SDKManager/AdsSDKManager/MaxAdsManager/MaxAdsManager.cs
@@ -271,10 +271,24 @@ namespace WZ
#region 原生广告功能
public void LoadNative() { }
- public double GetNativeRevenue() { return 0; }
- public void DisplayNative(NativeAdPosition position) { }
- public bool IsNativeAvailable() { return false; }
- public void RemoveNative() { }
+ public bool IsNativeAvailable(string adUnitId)
+ {
+ return false;
+ }
+
+ public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position)
+ {
+ }
+
+ public void RemoveNative(string adUnitId)
+ {
+
+ }
+
+ public double GetNativeRevenue(string adUnitId)
+ {
+ return 0;
+ }
#endregion
diff --git a/Assets/Script/SDKManager/AdsSDKManager/TpnAdsManager/TpnAdsManager.cs b/Assets/Script/SDKManager/AdsSDKManager/TpnAdsManager/TpnAdsManager.cs
index b9b079b..1136d96 100644
--- a/Assets/Script/SDKManager/AdsSDKManager/TpnAdsManager/TpnAdsManager.cs
+++ b/Assets/Script/SDKManager/AdsSDKManager/TpnAdsManager/TpnAdsManager.cs
@@ -245,6 +245,26 @@ namespace WZ
#region 原生广告功能
public void LoadNative() { }
+ public bool IsNativeAvailable(string adUnitId)
+ {
+ return false;
+ }
+
+ public void DisplayNative(string _adPos, string adUnitId, NativeAdPosition position)
+ {
+
+ }
+
+ public void RemoveNative(string adUnitId)
+ {
+
+ }
+
+ public double GetNativeRevenue(string adUnitId)
+ {
+ return 0;
+ }
+
public double GetNativeRevenue() { return 0; }
public void DisplayNative(NativeAdPosition position) { }
public bool IsNativeAvailable() { return false; }
diff --git a/Assets/Script/Test.cs b/Assets/Script/Test.cs
index aa85e8b..306a7cf 100644
--- a/Assets/Script/Test.cs
+++ b/Assets/Script/Test.cs
@@ -1,22 +1,46 @@
using System;
using System.Collections;
using System.Collections.Generic;
+using GoogleMobileAds.Api;
using UnityEngine;
using WZ;
public class Test : MonoBehaviour
{
+ private List _rewardedAdUnits = new List();
-private List _rewardedAdUnits = new List();
public void OnShowAd()
{
AppSDKManager.Instance.Init(null);
// KwaiAdsManager.Instance.ShowRewardAd();
-
}
public void OnShowInterstitial()
{
- KwaiAdsManager.Instance.OnInterstitialCallback();
+ // KwaiAdsManager.Instance.OnInterstitialCallback();
+ var small = gameObject.transform.Find("NativeAd-small").GetComponent();
+ var medium = gameObject.transform.Find("NativeAd-medium").GetComponent();
+ // var nativeAdPosition = NativeAdPosition.Create(new NativeTemplateStyle
+ // {
+ // TemplateId = NativeTemplateId.Medium
+ // }, medium);
+
+ var nativeAdPosition = NativeAdPosition.Create(new NativeTemplateStyle
+ {
+ 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}");
+ if (AdsSDKManager.Instance.IsNativeAdReady("ca-app-pub-3940256099942544/2247696110"))
+ {
+ // var nativeAdPosition = NativeAdPosition.Create(new NativeTemplateStyle
+ // {
+ // TemplateId = NativeTemplateId.Medium
+ // }, medium);
+ AdsSDKManager.Instance.ShowNativeAd("test", "ca-app-pub-3940256099942544/2247696110", nativeAdPosition);
+ }
+ else
+ {
+ Debug.LogWarning("luojian admob native ad start show fail,not ready.");
+ }
}
-}
+}
\ No newline at end of file