如何测试Unity Ads?

时间:2015-11-24 16:47:24

标签: android unity3d google-play 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商店,但我想确保广告有效。

我尝试过使用日志,但仅限于#34;更改了场景"改变场景时显示。

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!");
}
}

1 个答案:

答案 0 :(得分:4)

所以问题是你根本就不会打电话给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()等。