Unity3d 联合广告陷入循环
我在unity游戏中设置了一个测试广告。游戏结束后,我从GameManager脚本调用IntAd函数。但问题是,当我点击广告中的关闭按钮时,广告会一次又一次地出现。请帮助我如何在显示广告后停止IntAd功能Unity3d 联合广告陷入循环,unity3d,Unity3d,我在unity游戏中设置了一个测试广告。游戏结束后,我从GameManager脚本调用IntAd函数。但问题是,当我点击广告中的关闭按钮时,广告会一次又一次地出现。请帮助我如何在显示广告后停止IntAd功能 public class AdsManager : MonoBehaviour { public static AdsManager instance; private string playStoreID = "000000"; privat
public class AdsManager : MonoBehaviour
{
public static AdsManager instance;
private string playStoreID = "000000";
private string intAd = "video";
private string rewardedAd = "rewardedVideo";
private string bannerAd = "bannerAd";
public bool isTargrtPlayStore;
public bool isTestAd;
public static int start;
void Awake()
{
DontDestroyOnLoad(this.gameObject);
if (instance == null)
{
instance = this;
}
else
{
Destroy(this.gameObject);
}
}
private void Start()
{
InitializeAdvertisement();
}
private void InitializeAdvertisement()
{
if (isTargrtPlayStore)
{
Advertisement.Initialize(playStoreID, isTestAd);
return;
}
}
public void IntAd()
{
if (Advertisement.IsReady(intAd))
{
Advertisement.Show(intAd);
}
}
}
下面是GameManager脚本-
public class GameManager : MonoBehaviour
{
public static GameManager instance;
public bool gameOver;
void Awake()
{
if (instance == null){
instance = this;
}
}
// Start is called before the first frame update
void Start()
{
gameOver = false;
}
// Update is called once per frame
void Update()
{
}
public void StartGame()
{
UiManager.instance.GameStart();
UiManager.instance.StartScore1();
ScoreManager.instance.startScore();
GameObject.Find("PlatformSpawner").GetComponent<PlatformSpawner>().StartSpawningPlatforms();
//AdsManager.instance.BannerAd();
}
public void GameOver()
{
UiManager.instance.GameOver();
ScoreManager.instance.stopScore();
gameOver = true;
AdsManager.instance.IntAd();
}
}
公共类游戏管理器:单一行为
{
公共静态GameManager实例;
公共场所;
无效唤醒()
{
if(实例==null){
实例=此;
}
}
//在第一帧更新之前调用Start
void Start()
{
gameOver=false;
}
//每帧调用一次更新
无效更新()
{
}
公共无效StartName()
{
UiManager.instance.GameStart();
UiManager.instance.StartScore1();
ScoreManager.instance.startScore();
GameObject.Find(“PlatformSpawner”).GetComponent().StartSpawningPlatforms();
//AdsManager.instance.BannerAd();
}
公众假期
{
UiManager.instance.GameOver();
ScoreManager.instance.stopScore();
gameOver=true;
AdsManager.instance.IntAd();
}
}
调用GameOver函数的代码
void Update()
{
if (!started)
{
if (Input.GetMouseButtonDown(0))
{
rb.velocity = new Vector3(speed, 0, 0);
started = true;
GameManager.instance.StartGame();
}
}
if (!Physics.Raycast(transform.position, Vector3.down, 1f))
{
gameOver = true;
rb.velocity = new Vector3(0, -25f, 0);
Camera.main.GetComponent<CameraFollow>().gameOver = true;
GameManager.instance.GameOver();
}
void Update()
{
如果(!已启动)
{
if(Input.GetMouseButtonDown(0))
{
rb.velocity=新矢量3(速度,0,0);
开始=真;
GameManager.instance.StartGame();
}
}
if(!physical.Raycast(transform.position,Vector3.down,1f))
{
gameOver=true;
rb.velocity=新矢量3(0,-25f,0);
Camera.main.GetComponent().gameOver=true;
GameManager.instance.GameOver();
}
只需对名为GameEnd的bool执行if语句。将其设置为false。仅当GameEnd为false时播放广告。在广告实例化后,将GameEnd设置为true
if (!Physics.Raycast(transform.position, Vector3.down, 1f))
{
bool GameEnd = false;
gameOver = true;
rb.velocity = new Vector3(0, -25f, 0);
Camera.main.GetComponent<CameraFollow>().gameOver = true;
if(! GameEnd)
{
GameManager.instance.GameOver();
GameEnd = true;
}
}
if(!Physics.Raycast(transform.position,Vector3.down,1f))
{
bool GameEnd=false;
gameOver=true;
rb.velocity=新矢量3(0,-25f,0);
Camera.main.GetComponent().gameOver=true;
如果(!GameEnd)
{
GameManager.instance.GameOver();
GameEnd=true;
}
}
您调用的代码GameManager.GameOver()
在Update()
中,因此它会在每一帧中被调用,如果!physical.Raycast(transform.position,Vector3.down,1f)
在游戏结束时总是正确的(而不仅仅是正确的一次),那么它最终会调用GameManager.GameOver()
与您看到的行为一致的每一帧
您可以通过将!gameOver
添加到if语句中来解决此问题,这样它只会在游戏结束时进入if语句一次,然后在游戏开始时您可以将gameOver
翻回false
if (!Physics.Raycast(transform.position, Vector3.down, 1f) && !gameOver)
{
gameOver = true;
rb.velocity = new Vector3(0, -25f, 0);
Camera.main.GetComponent<CameraFollow>().gameOver = true;
GameManager.instance.GameOver();
}
if(!Physics.Raycast(transform.position,Vector3.down,1f)&!gameOver)
{
gameOver=true;
rb.velocity=新矢量3(0,-25f,0);
Camera.main.GetComponent().gameOver=true;
GameManager.instance.GameOver();
}
如果您没有看到GameManager中的代码,就无法回答您的问题。添加了@GarrisonBecker GameManager脚本。您可以提供调用GameManager.GameOver()的代码吗
method?添加到问题中如果问题没有准确回答所需的足够信息,在提供信息之前不要发布答案。GameManager脚本已添加完毕请立即尝试。感谢添加脚本