建设商城网站多少钱,建设企业网站得花多少,找人做彩票网站有哪些,服装网站建设的目的和意义Unity 之 最新Ads原生广告接入流程详解和工具类分享 一#xff0c;注册 Unity Ads 广告 SDK二#xff0c;下载 Unity Ads 广告 SDK三#xff0c;配置 Unity Ads 广告 SDK3.1 广告位展示流程3.2 代码初始化 四#xff0c;集成 Unity Ads 广告 SDK4.1 相关介绍4.2 代码分享 五… Unity 之 最新Ads原生广告接入流程详解和工具类分享 一注册 Unity Ads 广告 SDK二下载 Unity Ads 广告 SDK三配置 Unity Ads 广告 SDK3.1 广告位展示流程3.2 代码初始化 四集成 Unity Ads 广告 SDK4.1 相关介绍4.2 代码分享 五测试 Unity Ads 广告 SDK5.1 搭建场景5.2 后台数据 Unity Ads 是由 Unity Technologies 开发的广告平台可以用于在移动应用程序中显示广告。它提供了多种广告类型包括插屏广告、横幅广告、视频广告等。 在本文中我们将详细介绍如何接入 Unity Ads 广告 SDK。
一注册 Unity Ads 广告 SDK
在使用 Unity Ads 广告 SDK 之前需要先登录Unity Ads后台。地址: https://dashboard.unity3d.com/gaming/organizations 登录在Unity账号注意要和本地Hub使用同一账号。 登录成功后在“项目管理” 可进入到这个界面然后在“Projects” 面板中创建一个项目即可 创建项目之后返回到上一层找到广告配置界面
其他的数据看吧想不用管广告位置ID也不用改先按照默认操作集成即可。其他面板也可以等集成成功后慢慢看。 二下载 Unity Ads 广告 SDK
Unity Ads 广告 SDK 可以从 Unity Asset Store 中下载并导入到您的 Unity 项目中。在 Unity 中选择菜单栏的“Window”“Package Manager”然后在“Packages”选项卡中搜索“Advertisement Legacy”点击“Install”按钮即可下载和安装: 安装 安装完成后在Project Setting中找到Services -- Ads点击OFF 打开 打开后选择1步骤中后台创建的项目完成后即可入到如下界面
可以看到 GameId 中的 Android和iOS 都已经有了和后台项目创建的一致。
注意TestMode是测试模式正式发布前需要取消Enable test mode 选项。 三配置 Unity Ads 广告 SDK
3.1 广告位展示流程
广告初始化
成功 -- 加载广告位失败 -- 设定几秒后重新加载
广告位加载广告
成功 -- 可展示广告失败 -- 设定几秒后重新加载
在指定位置展示广告
成功 -- 监听展示结果比如激励广告完成发放奖励失败 -- 加载成功后几乎不会有展示失败的情况
3.2 代码初始化
注意配置的广告ID换成自己的测试模式是否开启手动控制。初始化代码如下 [SerializeField] string _androidGameId 5309904;[SerializeField] string _iOSGameId 5309905;[SerializeField] bool _testMode true;private string _gameId;void Awake(){InitializeAds();}public void InitializeAds(){
#if UNITY_IOS_gameId _iOSGameId;
#elif UNITY_ANDROID_gameId _androidGameId;
#elif UNITY_EDITOR_gameId _androidGameId;
#endifif (!Advertisement.isInitialized Advertisement.isSupported){Advertisement.Initialize(_gameId, _testMode, this);}}四集成 Unity Ads 广告 SDK
4.1 相关介绍 设置Banner位置 在代码中使用 Unity Ads SDK 的 Banner API 来显示横幅广告。使用 Advertisement.Banner.SetPosition(_bannerPosition) 方法设置广告位置然后使用 Show() 方法显示广告。 插屏和激励视频 对于插屏广告和奖励视频广告可以使用 Unity Ads SDK 的 Interstitial API 和 Rewarded Video API 来显示广告。
在显示广告时可以通过监听广告事件来处理广告的状态。例如在插屏广告显示完成后可以使用以下代码来处理广告事件
在此示例中我们通过实现 IUnityAdsListener 接口来监听广告事件。在 Start() 方法中我们添加了一个监听器并使用 Initialize() 方法初始化广告 SDK。然后我们使用 Show() 方法显示插屏广告。当广告状态发生变化时Unity Ads SDK 将调用相应的事件方法。 4.2 代码分享
测试代码如下注意更换自己的项目id
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Advertisements;public class UnityAdsManager : MonoBehaviour, IUnityAdsInitializationListener, IUnityAdsLoadListener, IUnityAdsShowListener
{public static UnityAdsManager Ins;[SerializeField] string _androidGameId 5309985;[SerializeField] string _iOSGameId 5309984;[SerializeField] bool _testMode true;private string _gameId;void Awake(){Ins this;InitializeAds();}public void InitializeAds(){
#if UNITY_IOS_gameId _iOSGameId;
#elif UNITY_ANDROID_gameId _androidGameId;
#elif UNITY_EDITOR_gameId _androidGameId;
#endifif (!Advertisement.isInitialized Advertisement.isSupported){Advertisement.Initialize(_gameId, _testMode, this);}}public void OnInitializationComplete(){Debug.Log(Unity Ads 广告初始化完成.);InitAdUnit();InitRewardAD();InitBanner();}public void OnInitializationFailed(UnityAdsInitializationError error, string message){Debug.Log($Unity Ads 广告初始化失败: {error.ToString()} - {message});}#region 插屏广告// 插屏广告IDstring _androidAdUnitId Interstitial_Android;string _iOsAdUnitId Interstitial_iOS;string _adInterstitialId;private bool _InterstitialLoaded false;void InitAdUnit(){_adInterstitialId (Application.platform RuntimePlatform.IPhonePlayer)? _iOsAdUnitId: _androidAdUnitId;LoadInterstitialAd();}/// summary/// 加载插屏/// /summarypublic void LoadInterstitialAd(){if (_InterstitialLoaded) return;Debug.Log(Loading Ads 加载插屏广告ID: _adInterstitialId);Advertisement.Load(_adInterstitialId, this);}/// summary/// 展示插屏/// /summarypublic void ShowInterstitialAd(){if (_InterstitialLoaded){Debug.Log(Showing Ads 显示广告ID: _adInterstitialId);Advertisement.Show(_adInterstitialId, this);}else{LoadInterstitialAd();}}#endregion 插屏#region 激励视频string _androidRewardedUnitId Rewarded_Android;string _iOSRewardedId Rewarded_iOS;string _adRewardedId null;private bool _RewardLoaded false;void InitRewardAD(){
#if UNITY_IOS_adRewardedId _iOSRewardedId;
#elif UNITY_ANDROID_adRewardedId _androidRewardedUnitId;
#endifLoadRewardedAd();}/// summary/// 加载激励视频/// /summarypublic void LoadRewardedAd(){if (_RewardLoaded) return;Debug.Log(Loading Ad: _adRewardedId);Advertisement.Load(_adRewardedId, this);}private Actionbool RewardedAdClose;/// summary/// 展示激励视频/// /summarypublic void ShowRewardedAd(Actionbool OnClose){RewardedAdClose OnClose;Advertisement.Show(_adRewardedId, this);}#endregion#region Banner[SerializeField] BannerPosition _bannerPosition BannerPosition.BOTTOM_CENTER;string _androidBannerId TpxxlLobbyPopBanner;string _iOSBannerId Banner_iOS;string _adBannerId null;private bool _adBannerLoaded false;void InitBanner(){// Get the Ad Unit ID for the current platform:
#if UNITY_IOS_adBannerId _iOSBannerId;
#elif UNITY_ANDROID_adBannerId _androidBannerId;
#endif// 设置Banner显示位置Advertisement.Banner.SetPosition(_bannerPosition);}public void LoadBanner(){if (_adBannerLoaded) return;// 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(_adBannerId, options);}void OnBannerLoaded(){_adBannerLoaded true;Debug.Log(Banner Ads 加载完成); }void OnBannerError(string message){_adBannerLoaded false;Debug.Log($Banner Ads 加载失败 Error: {message});// 可选地执行附加代码例如尝试加载另一个广告。}/// summary/// 展示Banner/// /summarypublic void ShowBannerAd(){if (!_adBannerLoaded){LoadBanner();}else{BannerOptions options new BannerOptions{clickCallback OnBannerClicked,hideCallback OnBannerHidden,showCallback OnBannerShown};// Show the loaded Banner Ad Unit:Advertisement.Banner.Show(_adBannerId, options);}}/// summary/// 隐藏Banner/// /summarypublic void HideBannerAd(){Advertisement.Banner.Hide();}void OnBannerClicked() { }void OnBannerShown() { }void OnBannerHidden(){LoadBanner();}#endregionpublic void OnUnityAdsAdLoaded(string adUnitId){// 如果广告单元成功加载内容则可选择执行代码。Debug.Log(Showing Ads 加载广告完成ID: adUnitId);if (adUnitId _androidAdUnitId || adUnitId _iOsAdUnitId){_InterstitialLoaded true;}else if (adUnitId _androidRewardedUnitId || adUnitId _iOSRewardedId){_RewardLoaded true;}}public void OnUnityAdsFailedToLoad(string _adUnitId, UnityAdsLoadError error, string message){Debug.Log($Error Ads 加载广告失败 Unit: {_adUnitId} - {error.ToString()} - {message});if (_adUnitId _androidAdUnitId || _adUnitId _iOsAdUnitId){_InterstitialLoaded false;}else if (_adUnitId _androidRewardedUnitId || _adUnitId _iOSRewardedId){_RewardLoaded false;}}public void OnUnityAdsShowFailure(string _adUnitId, UnityAdsShowError error, string message){Debug.Log($Error Ads 展示广告失败 Unit {_adUnitId}: {error.ToString()} - {message});// 如果广告单元无法显示可以选择执行代码例如加载另一个广告if (_adUnitId _androidAdUnitId || _adUnitId _iOsAdUnitId){_InterstitialLoaded false;}else if (_adUnitId _androidRewardedUnitId || _adUnitId _iOSRewardedId){_RewardLoaded false;}}public void OnUnityAdsShowStart(string _adUnitId) { }public void OnUnityAdsShowClick(string _adUnitId) { } // 视频展示完成发放奖励:public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState showCompletionState){if (adUnitId.Equals(adUnitId) showCompletionState.Equals(UnityAdsShowCompletionState.COMPLETED)){Debug.Log(Unity Ads 激励视频播放完成);// 发放奖励RewardedAdClose(true);}// 加载新的激励视频if (adUnitId _androidRewardedUnitId || adUnitId _iOSRewardedId){_RewardLoaded false;LoadRewardedAd();}else if (adUnitId _androidAdUnitId || adUnitId _iOsAdUnitId){_InterstitialLoaded false;LoadInterstitialAd();}}
}五测试 Unity Ads 广告 SDK
5.1 搭建场景
搭建测试场景如下
注意红框中的广告位ID要和后台创建的对应上测试时要先等加载完成再执行展示即可。
5.2 后台数据 以上就是接入 Unity Ads 广告 SDK 的流程。需要正确配置广告选项并根据应用程序的需求选择合适的广告类型。