我有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!");
}
}
答案 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()等。