Unity 使用AdsManager控制各种广告

60 篇文章 2 订阅
9 篇文章 1 订阅

设置完Google广告之后导入项目

调用方式:

AdsManager.Main.ShowBanner();  //显示横屏广告

AdsManager.Main.ShowInterstitial();   //显示插屏广告

AdsManager.Main.ShowWatchVideo();  //播放激励视频

using System;
using UnityEngine;
using GoogleMobileAds.Api;
 
public class AdsManager : MonoBehaviour
{
    private bool noads
    {
        get
        {
            if (PlayerPrefs.GetInt("Ads") == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        set
        {
            if (value)
            {
                PlayerPrefs.SetInt("Ads",1);
            }
            else
            {
                PlayerPrefs.SetInt("Ads",0);
            }
            PlayerPrefs.Save();
        }
    }
    //是否开启广告
    public bool Noads
    {
        get { return noads; }
        set
        {
            if (!value)
            {
                HideBanner();
            }
 
            noads = value;
        }
    }
 
    private static AdsManager main;
 
    public static AdsManager Main
    {
        get { return main; }
    }
 
    private void Awake()
    {
        main = this;
        DontDestroyOnLoad(gameObject);
        
        if (Application.platform == RuntimePlatform.Android)
        {
//            bannerID = "安卓横屏广告ID";
//            interstitialID = "安卓插屏广告ID";
//            watchVedioID = "安卓激励视频广告ID";
//            以下为对应的测试ID
            bannerID = "ca-app-pub-3940256099942544/6300978111";
            interstitialID = "ca-app-pub-3940256099942544/1033173712";
            watchVedioID = "ca-app-pub-3940256099942544/5224354917";
        }
        else if (Application.platform == RuntimePlatform.IPhonePlayer)
        {
//            bannerID = "苹果横屏广告ID";
//            interstitialID = "苹果插屏广告ID";
//            watchVedioID = "苹果激励视频广告ID";
//            以下为对应的测试ID
            bannerID = "ca-app-pub-3940256099942544/2934735716";
            interstitialID = "ca-app-pub-3940256099942544/4411468910";
            watchVedioID = "ca-app-pub-3940256099942544/1712485313";
        }
        ShowBanner();
        LoadInterstitial();
 
        rewardBasedVideo.OnAdRewarded += (sender, reward) => { watchVedioClose();};
        rewardBasedVideo.OnAdClosed += (sender, reward) => {LoadWatchVedio();};
        interstitial.OnAdClosed += (sender, args) => { adsClose(); 
        interstitial.Destroy(); LoadInterstitial();};
    }
    
    
    private string bannerID = "";
    private string interstitialID = "";
    private string watchVedioID = "";
    
    
    private BannerView bannerView;
    private InterstitialAd interstitial;
    private RewardBasedVideoAd rewardBasedVideo;
 
    public Action adsClose;
    public Action watchVedioClose;
 
    private void ShowBanner()
    {
        if (!noads)
        {
            bannerView = new BannerView(bannerID, AdSize.SmartBanner, AdPosition.Bottom);
            AdRequest request = new AdRequest.Builder().Build();
            this.bannerView.LoadAd(request);
        }
    }
 
    private void HideBanner()
    {
        if (bannerView != null) bannerView.Destroy();
    }
 
    private void LoadInterstitial()
    {
        interstitial = new InterstitialAd(interstitialID);
        AdRequest request = new AdRequest.Builder().Build();
        interstitial.LoadAd(request);
    }
 
    public void ShowInterstitial(Action action)
    {
        adsClose = action;
        if (!noads)
        {
            if (interstitial.IsLoaded())
            {
                interstitial.Show();
            }
            else
            {
                adsClose();
                LoadInterstitial();
            }
        }
        else
        {
            adsClose();
        }
    }
 
    private void LoadWatchVedio()
    {
        rewardBasedVideo = RewardBasedVideoAd.Instance;
        AdRequest request = new AdRequest.Builder().Build();
        rewardBasedVideo.LoadAd(request, watchVedioID);
    }
 
    public void ShowWatchVideo(Action action)
    {
        watchVedioClose = action;
        if (interstitial.IsLoaded())
        {
            rewardBasedVideo.Show();
        }
        else
        {
            LoadWatchVedio();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值