显示Unity3d广告,后跟Application.LoadLevel(Application.loadedLevel)

本文关键字:Application LoadLevel loadedLevel 后跟 Unity3d 广告 显示 | 更新日期: 2023-09-27 18:00:56

当用户选择在我的Unity3d游戏中回放当前场景时,我正试图在Android应用程序上显示间隙广告。我的第一次尝试在编辑器中产生了测试广告的闪烁,但在实际设备上没有产生任何效果。

这是我使用的代码(仅包括相关代码(:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using UnityEngine.Advertisements;
public class GameController : MonoBehaviour
{
    ...
    void Awake ()
        {
            Advertisement.Initialize("Game ID omitted");
        }
    ...
    public void ShowAd ()
    {
        // If ready, show an advertisement
        if (Advertisement.IsReady ()) 
        {
            Advertisement.Show ();
        }
    }
    public void Replay ()
    {
        ShowAd ();
        Application.LoadLevel (Application.loadedLevel);
    }

我认为这可能与ShowAd ();之后的Application.LoadLevel (Application.loadedLevel);有关,所以我创建了一个新的测试按钮来尝试隔离问题:

public void ShowAd ()
{
    // If ready, show an advertisement
    if (Advertisement.IsReady ()) 
    {
        Advertisement.Show ();
    }
}
public void TestAdButton ()
{
    ShowAd ();
}

这样可以正确地显示广告;然而,我想在点击重播按钮后实现广告(这应该会触发当前场景的重播(。Unity的员工说显示添加会自动暂停游戏,这让我更加困惑。

我在这里做错了什么?

显示Unity3d广告,后跟Application.LoadLevel(Application.loadedLevel)

我看到的错误是,您在调用ShowAd之后调用LoadLevel,因此会显示add,但LoadLevel会立即覆盖它。尝试存储PlayerPrefs以确定该级别是否已重新启动。

public void Replay ()
{
    PlayerPrefs.SetInt("isReplayed", 1);
    Application.LoadLevel (Application.loadedLevel);
}

然后在GameController上添加:

public void Start()
{
    if(PlayerPrefs.GetInt("isReplayed") == 1)
    {
         ShowAd();
    }
    PlayerPrefs.SetInt("isReplayed", 0);
}