如何测试 Unity Ads?

How to test Unity Ads?

我有 Unity 5.2,每次加载新场景时我都想加载广告。我将 Unity 广告代码添加到我的脚本中,当我按下按钮时它会改变场景。这是脚本:

using UnityEngine;
using System.Collections;
using UnityEngine.Advertisements;


public class UI1 : MonoBehaviour
{
public void ShowAd()
{
    if (Advertisement.IsReady())
    {
        Advertisement.Show();
    }
}


public void ChangeToScene(int sceneToChangeTo)
{
    Application.LoadLevel(sceneToChangeTo);
}
}

如何测试脚本是否加载广告?我尚未将应用发布到 Google Play 商店,但我想确保广告有效。

我试过使用日志,但在切换场景时只显示 "Changed Scene"。

using UnityEngine;
using System.Collections;
using UnityEngine.Advertisements;


public class UI1 : MonoBehaviour
{
public void ShowAd()
{
    if (Advertisement.IsReady())
        Debug.Log("Line 1 of ad script worked!");
    {
        Advertisement.Show();
        Debug.Log("Line 2 of ad script worked, might be showing ads!!");
    }

}


public void ChangeToScene(int sceneToChangeTo)
{
    Application.LoadLevel(sceneToChangeTo);
    Debug.Log("Changed scene!");
}
}

所以问题是你从来没有调用 Advertisement.Show()。它不会在场景加载或其他情况下自动调用,您必须调用它。因此,例如,您可以稍微修改一下代码,如下所示:

public class UI1 : MonoBehaviour 
{ 

    void Start() {
        // We use coroutine and not calling Show() directly because
        // it is possible that at this point ads are not initialized yet
        StartCoroutine(ShowAds());
    }

    IEnumerator ShowAds() {
        if (Advertisement.IsReady()) { 
            Advertisement.Show();
            yield break;
        }
        // Ads are not initialized yet, wait a little and try again
        yield return new WaitForSeconds(1f);

        if (Advertisement.IsReady()) { 
            Advertisement.Show();
            yield break;
        }

        Debug.LogError("Something wrong");
    }

    public void ChangeToScene(int sceneToChangeTo) { 
        Application.LoadLevel(sceneToChangeTo);
    } 
}

您还需要在每个场景中放置一个UI1类型的对象,以便在每个场景中调用Start()函数。

您可以从这里继续。实际上有很多不同的方法可以做到这一点,这里在每个场景开始时调用广告,但你也可以这样做,例如,在场景加载之前通过修改 ChangeScene() 函数,或者制作一个坚不可摧的游戏对象监控 OnLevelWasLoaded() 等。