0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Unity】広告の導入方法

Posted at

導入方法

UnityのServicesの部分を有効にしたら、自動で、「Package Manager」の「Advertisement」が有効になる。

アセットストアからのインポートは行わない。

Servicesの部分を設定する。

Advancedのチェックボックスは外す!!

image.png

パッケージのアップデート

Package Managerから、Advertisementを開いて、アップデートする。

初期化

一番初めのシーンで初期化を行います。
そのために、ゲームオブジェクトをはじめのシーンに用意して、そこで、下記のスクリプトを読み込みます。

広告初期化用スクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Advertisements;

public class AdsControl : MonoBehaviour, IUnityAdsListener
{
    /// <summary>
    /// 広告再生スキップフラグ
    /// </summary>
    public static bool adsSkip = false;

    /// <summary>
    /// 広告再生終了フラグ
    /// </summary>
    public static bool adsEnd = false;

    private void Awake()
    {
        //DontDestroyOnLoad(this);
    }

    // Start is called before the first frame update
    void Start()
    {
        // ゲームIDをAndroidとiOSで分ける
# if UNITY_ANDROID
        string gameID = "XXXXXXX";
# else
        string gameID = "XXXXXXX";
# endif
        //広告の初期化
        Advertisement.Initialize(gameID, testMode: true);

        //広告関連のイベントが発生するように登録
        Advertisement.AddListener(this);

        Invoke("ShowMovieAd", 10f);
    }

    public static bool ShowMovieAd(string adsPlacement)
    {
        //広告全体の準備が出来ているかチェック
        if (!Advertisement.IsReady())
        {
            Debug.LogWarning("動画広告の準備が出来ていません");
            return false;
        }

        //表示したい広告の準備が出来ているかチェック
        var state = Advertisement.GetPlacementState(adsPlacement);
        if (state != PlacementState.Ready)
        {
            Debug.LogWarning($"{adsPlacement}の準備が出来ていません。現在の状態 : {state}");
            return false;
        }

        // フラグ初期化
        adsSkip = false;
        adsEnd = false;

        //広告表示
        Advertisement.Show(adsPlacement);
        return true;
    }

    //=================================================================================
    //イベント
    //=================================================================================

    //広告の準備完了
    public void OnUnityAdsReady(string placementId)
    {
        Debug.Log($"{placementId}の準備が完了");
    }

    //広告でエラーが発生
    public void OnUnityAdsDidError(string message)
    {
        Debug.Log($"広告でエラー発生 : {message}");
        adsEnd = true;
    }

    //広告開始
    public void OnUnityAdsDidStart(string placementId)
    {
        Debug.Log($"{placementId}の広告が開始");
    }

    //広告の表示終了
    public void OnUnityAdsDidFinish(string placementId, ShowResult showResult)
    {
        Debug.Log($"{placementId}の表示終了");
        adsEnd = true;
        switch (showResult)
        {
            //最後まで視聴完了(リワード広告ならここでリワード付与する感じ)
            case ShowResult.Finished:
                Debug.Log("広告の表示成功");
                break;
            //スキップされた
            case ShowResult.Skipped:
                Debug.Log("広告スキップ");
                adsSkip = true;
                break;
            //表示自体が失敗した
            case ShowResult.Failed:
                Debug.LogWarning("広告の表示失敗");
                break;
        }
    }
}

他のシーンからの呼び出し

別のシーンでAdsの初期化を実行していて・・・
その後、オブジェクトは破棄されている場合でも、スクリプトは実行されているので、Advertisementクラスを呼び出すことができる。

参考URL

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?