Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

这篇具有很好参考价值的文章主要介绍了Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity Ads 是由 Unity Technologies 开发的广告平台,可以用于在移动应用程序中显示广告。它提供了多种广告类型,包括插屏广告、横幅广告、视频广告等。

在本文中,我们将详细介绍如何接入 Unity Ads 广告 SDK。

一,注册 Unity Ads 广告 SDK

在使用 Unity Ads 广告 SDK 之前,需要先登录Unity Ads后台。地址: https://dashboard.unity3d.com/gaming/organizations

  1. 登录在Unity账号,注意要和本地Hub使用同一账号。
    Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

  2. 登录成功后,在“项目管理” 可进入到这个界面,然后在“Projects” 面板中创建一个项目即可:
    Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益
    Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

  3. 创建项目之后,返回到上一层,找到广告配置界面:
    Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

其他的数据看吧想不用管,广告位置ID也不用改,先按照默认操作集成即可。其他面板也可以等集成成功后慢慢看。


二,下载 Unity Ads 广告 SDK

Unity Ads 广告 SDK 可以从 Unity Asset Store 中下载,并导入到您的 Unity 项目中。在 Unity 中,选择菜单栏的“Window”>“Package Manager”,然后在“Packages”选项卡中搜索“Advertisement Legacy”,点击“Install”按钮即可下载和安装:

  1. 安装
    Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

  2. 安装完成后,在Project Setting中找到Services --> Ads,点击OFF 打开
    Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

  3. 打开后选择1步骤中后台创建的项目,完成后即可入到如下界面
    Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

可以看到 GameId 中的 AndroidiOS 都已经有了和后台项目创建的一致。

注意:TestMode是测试模式,正式发布前需要取消:Enable test mode 选项。


三,配置 Unity Ads 广告 SDK

3.1 广告位展示流程

  1. 广告初始化
  • 成功 --> 加载广告位
  • 失败 --> 设定几秒后重新加载
  1. 广告位加载广告
  • 成功 --> 可展示广告
  • 失败 --> 设定几秒后重新加载
  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;
#endif
        if (!Advertisement.isInitialized && Advertisement.isSupported)
        {
            Advertisement.Initialize(_gameId, _testMode, this);
        }
    }

四,集成 Unity Ads 广告 SDK

4.1 相关介绍

  1. 设置Banner位置:
    在代码中,使用 Unity Ads SDK 的 Banner API 来显示横幅广告。使用 Advertisement.Banner.SetPosition(_bannerPosition) 方法设置广告位置,然后使用 Show() 方法显示广告。

  2. 插屏和激励视频
    对于插屏广告和奖励视频广告,可以使用 Unity Ads SDK 的 Interstitial APIRewarded 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;
#endif
        if (!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 插屏广告
    
    // 插屏广告ID
    string _androidAdUnitId = "Interstitial_Android";
    string _iOsAdUnitId = "Interstitial_iOS";
    string _adInterstitialId;
    private bool _InterstitialLoaded = false;

    void InitAdUnit()
    {
        _adInterstitialId = (Application.platform == RuntimePlatform.IPhonePlayer)
            ? _iOsAdUnitId
            : _androidAdUnitId;
        LoadInterstitialAd();
    }
    
    /// <summary>
    /// 加载插屏
    /// </summary>
    public void LoadInterstitialAd()
    {
        if (_InterstitialLoaded) return;
        Debug.Log("Loading Ads 加载插屏广告ID: " + _adInterstitialId);
        Advertisement.Load(_adInterstitialId, this);
    }
 
    /// <summary>
    /// 展示插屏
    /// </summary>
    public 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;
#endif
        LoadRewardedAd();
    }
    
    /// <summary>
    /// 加载激励视频
    /// </summary>
    public void LoadRewardedAd()
    {
        if (_RewardLoaded) return;
        Debug.Log("Loading Ad: " + _adRewardedId);
        Advertisement.Load(_adRewardedId, this);
    }

    private Action<bool> RewardedAdClose;
    /// <summary>
    /// 展示激励视频
    /// </summary>
    public void ShowRewardedAd(Action<bool> 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
    /// </summary>
    public 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
    /// </summary>
    public void HideBannerAd()
    {
        Advertisement.Banner.Hide();
    }
    
        
    void OnBannerClicked() { }
    void OnBannerShown() { }

    void OnBannerHidden()
    {
        LoadBanner();
    }
    
    #endregion
    
    public 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 搭建场景

搭建测试场景如下:
Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

注意:红框中的广告位ID要和后台创建的对应上,测试时要先等加载完成再执行展示即可。

5.2 后台数据

Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益

以上就是接入 Unity Ads 广告 SDK 的流程。需要正确配置广告选项,并根据应用程序的需求选择合适的广告类型。


点击链接下载接入SDK的源码,没有积分的童鞋,
点击下面👇🏻卡片,回复 UnityAds 也可以获得文中接入SDK的源码~文章来源地址https://www.toymoban.com/news/detail-515274.html

到了这里,关于Unity 之 最新原生广告Ads接入 -- 助力增长游戏收益的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity sdk -AppLovin MAX 广告聚合平台接入+Firebase统计

    unity版本:2019.4.40f1 Android Studio :4.2.1 sdk版本:5.4.6 max对应unity的官方文档: MAX Mediation Documentation https://dash.applovin.com/documentation/mediation/unity/getting-started/integration  a、集成max SDK 的更新  b、其他中介平台组加入(我这边加入了 google admob 和Mintegral和Pangle 三个中介平台)   c、

    2023年04月09日
    浏览(43)
  • Unity接入IAP内购(Android,IOS)最新流程,第一篇:内购接入

    你好! 这将是一个系列的文章 第一篇 介绍客户端里支付的调起以及购买。 第二篇 介绍后台对购买结果的验证以及发货(IOS)。 第三篇 介绍后台对购买结果的验证以及发货(Android)。 第四篇 介绍后台对内购退单问题的处理(IOS欺诈检测以及欺诈信息反馈)。 我们是用的

    2024年04月13日
    浏览(46)
  • Unity上接入手柄,手柄控制游戏物体移动

    1、unity软件上安装system input 组件。菜单栏【window】-【Packag Manager】打开如下界面,查找Input System,并且安装。 2、安装成功后插入手柄到windows上,打开菜单栏上【window】--【Analysis】--【Input Debuger】 进入Input Debug界面,可以看到手柄设备能被Unity识别。 3、双击【XinputControllerW

    2024年04月15日
    浏览(51)
  • Unity发布抖音小游戏:SDK接入

    上篇介绍Unity小游戏发布抖音平台的开发者账号注册以及小游戏创建和申请。本篇介绍字节SDK接入Unity游戏项目中。 接入参考教程:Docs,下载bgdt.package包,并导入Unity项目工程。    打开ByteGame菜单,弹出字节工具面板。点击下载安装另外2个字节小游戏工具。   安装完毕后,

    2024年02月16日
    浏览(61)
  • 【Unity】AI实战应用——Unity接入GPT和对游戏开发实际应用的展望

    GPT for unity插件地址: GitHub - sunsvip/ChatGPTForUnity: ChatGPT for unity 用法: 打开Unity PackageManager界面. Add package from git URL 粘贴插件地址添加 https://github.com/sunsvip/ChatGPTForUnity.git ———————————————————————————————————— 几个资本大佬花钱让一群

    2024年02月08日
    浏览(42)
  • 【Unity】AI实战应用——Unity接入ChatGPT和对游戏开发实际应用的展望

    GPT for unity插件地址: GitHub - sunsvip/ChatGPTForUnity: ChatGPT for unity 用法: 打开Unity PackageManager界面. Add package from git URL 粘贴插件地址添加 https://github.com/sunsvip/ChatGPTForUnity.git ———————————————————————————————————— 几个资本大佬花钱让一群

    2023年04月08日
    浏览(49)
  • AI虚拟人助力数字经济新增长

    虚拟主播发布新闻,数字员工在线与顾客互动,虚拟偶像出现在剧院的舞台上……最近几年,虚拟人行业的应用范围越来越广,从娱乐媒体到金融科技,大量虚拟人进入各个行业,展现出自己的风采。根据有关机构的预测,到2030年,虚拟人行业的总市场规模将会达到2700亿元

    2024年02月10日
    浏览(43)
  • 电话营销:电销机器人助力销售增长

    电话营销:电销机器人助力销售增长 随着科技的不断发展,电话营销作为一种传统的销售方式,正逐渐焕发出新的活力。尤其是在机器人技术的加持下,电话营销的效果更是得到了显著提升。本文将探讨电话营销中机器人如何助力销售增长,并分析其优势和实际应用场景。

    2024年02月06日
    浏览(48)
  • 最新Unity游戏主程进阶学习大纲(2个月)

    过完年了,很多同学开始重新规划自己的职业方向,找更好的机会,准备升职或加薪。今天给那些工作了1~5年的开发者梳理” 游戏开发客户端主程 ”的学习大纲,帮助大家做好面试准备。适合Unity客户端开发者。进阶主程其实就是从固定的几个方面搭建好完整的知识体系做好对

    2024年02月21日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包