显示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的员工说显示添加会自动暂停游戏,这让我更加困惑。
我在这里做错了什么?
我看到的错误是,您在调用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);
}