1. 程式人生 > >Unity Monetization SDK 3.0實踐

Unity Monetization SDK 3.0實踐

看了官方的介紹我也是來試試,確實發現很好用,看來unity的發展以後會更加的便捷和實用。官方介紹:https://mp.weixin.qq.com/s/Z3RWD3H1YjV0aF0qEJv4ZQ

介面使用教程:

https://unityads.unity3d.com/help/unity/integration-guide-unity

選擇裡面的統一整合指南,如下圖(我的是網頁翻譯後的)

 

因為上面寫的很詳細,我就不解釋了,直接上實踐:

首先Unity用UGUI建立幾個Button,如下圖:

注:一下程式碼在介面文件裡面都有

然後是上程式碼UnityAdsScript (隨便找個空物體放上):


 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Monetization;

public class UnityAdsScript : MonoBehaviour {

    // Use this for initialization
    string gameId = "1234567";
    bool testMode = true;

    void Start()
    {
        Monetization.Initialize(gameId, testMode);
    }

    // Update is called once per frame
    void Update () {
        
    }
}

第一個button新增程式碼:UnityAdsButton

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Monetization;

[RequireComponent(typeof(Button))]
public class UnityAdsButton : MonoBehaviour
{

    public string placementId = "rewardedVideo";
    private Button adButton;
    public string GameID;
//#if UNITY_IOS
//   private string gameId = "1234567";
//#elif UNITY_ANDROID
//    private string gameId = "7654321";
//#endif
     void Awake()
    {
           string gameId = "1234567";
        GameID = gameId;
    }
    void Start()
    {
        adButton = GetComponent<Button>();
        if (adButton)
        {
            adButton.onClick.AddListener(ShowAd);
        }

        if (Monetization.isSupported)
        {
            Monetization.Initialize(GameID, true);
        }
    }
        void Update()
        {
            if (adButton)
            {
                adButton.interactable = Monetization.IsReady(placementId);
            }
        }

        void ShowAd()
        {
            ShowAdCallbacks options = new ShowAdCallbacks();
            options.finishCallback = HandleShowResult;
            ShowAdPlacementContent ad = Monetization.GetPlacementContent(placementId) as ShowAdPlacementContent;
            ad.Show(options);
        }

        void HandleShowResult(ShowResult result)
        {
            if (result == ShowResult.Finished)
            {
                // Reward the player
            }
            else if (result == ShowResult.Skipped)
            {
                Debug.LogWarning("The player skipped the video - DO NOT REWARD!");
            }
            else if (result == ShowResult.Failed)
            {
                Debug.LogError("Video failed to show");
            }
        }
    }

第二個button新增程式碼RewardedAdsPlacement :

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

using UnityEngine.Monetization;

public class RewardedAdsPlacement : MonoBehaviour
{

    public string placementId = "rewardedVideo";

    public void ShowAd()
    {
        StartCoroutine(WaitForAd());
    }

    IEnumerator WaitForAd()
    {
        while (!Monetization.IsReady(placementId))
        {
            yield return null;
        }

        ShowAdPlacementContent ad = null;
        ad = Monetization.GetPlacementContent(placementId) as ShowAdPlacementContent;

        if (ad != null)
        {
            ad.Show(AdFinished);
        }
    }

    void AdFinished(ShowResult result)
    {
        if (result == ShowResult.Finished)
        {
            Debug.LogError("Finished");
        }
    }
}

第三個button新增程式碼UnityAdsPlacement

using UnityEngine.Monetization;
using UnityEngine;
using System.Collections;

public class UnityAdsPlacement : MonoBehaviour
{

    public string placementId = "video";

    public void ShowAd()
    {
        StartCoroutine(ShowAdWhenReady());
    }

    private IEnumerator ShowAdWhenReady()
    {
        while (!Monetization.IsReady(placementId))
        {
            yield return new WaitForSeconds(0.25f);
        }

        ShowAdPlacementContent ad = null;
        ad = Monetization.GetPlacementContent(placementId) as ShowAdPlacementContent;

        if (ad != null)
        {
            ad.Show();
        }
    }
}

三個button 的效果是一樣的,如下圖(廣告嘛,肯定是需要網路的):

 

這樣簡單的使用廣告就可以了。