【问题标题】:How to test Unity Ads?如何测试 Unity 广告?
【发布时间】:2015-11-24 16:47:24
【问题描述】:

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

【问题讨论】:

  • 应用程序不必发布到 Google Play 就可以投放广告。如果这是您唯一关心的问题 - 应该没有问题。还是您尝试在设备上运行它并出现错误?
  • 当我将项目打包为 .apk 并安装在三星 Tab 3 上时,它工作正常,但没有广告显示,无论有无广告脚本都没有变化。但是,当我在底部的 Unity 编辑器中运行时,它会显示-“UnityAdsEditor: Initialize(1018009, True); UnityEditor.Advertisements.UnityAdsEditor:EditorOnLoad()”- “true”是否意味着有广告?
  • 表示广告已初始化,仅此而已。当广告在编辑器中显示时,您应该会看到一个蓝屏,上面写着“您的广告在这里”或类似的内容。
  • 你发布的代码就是你所有的吗?您是否从某个地方调用 ShowAd()?
  • 根本没有使用 ShowAd()

标签: android unity3d google-play ads


【解决方案1】:

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

【讨论】:

  • 谢谢!现在像魔术一样工作!我看到蓝屏显示“这将是您的广告单元,一切正常!”。显然每个场景都有太多广告,所以我用你的代码创建了另一个脚本,我可以将它分配给某些场景中的对象,并将 UI1 设置为加载没有广告的场景。获得最佳答案:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多