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 的效果是一樣的,如下圖(廣告嘛,肯定是需要網路的):
這樣簡單的使用廣告就可以了。