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 的效果是一样的,如下图(广告嘛,肯定是需要网络的):
这样简单的使用广告就可以了。