有一种方法负责暂停游戏。当用户暂停时,会每隔一段时间展示一次插页式广告。不显示广告时一切正常,但如果显示广告,则在广告timeScale = 0期间,在广告timeScale = 1之后。这是为什么呢?如何解决?这是方法本身:
public void ShowPause(bool enable)
{
if (enable)
{
Time.timeScale = 0;
if (startGame)
{
pauseText.enabled = true;
}
if (PlayerPrefs.GetInt("ShowsPause") >= 2)
{
PlayerPrefs.SetInt("ShowsPause", 0);
Add.manager.ShowIntersitialAd();
}
else
{
PlayerPrefs.SetInt("ShowsPause", PlayerPrefs.GetInt("ShowsPause") + 1);
}
}
else
{
Time.timeScale = 1;
startGame = true;
}
uiInGameCanvas.enabled = !enable;
pauseCanvas.enabled = enable;
}
如果您使用 Google AdMob,则此脚本中的方法会在显示广告时执行。
它位于文件夹 Assets\GoogleMobileAds\Platforms\Unity
如果您需要确保所有类型的广告之后 timeScale 保持为零,则只需删除 ResumeGame() 方法中的 Time.timeScale = 1 行;如果您需要在特定广告(例如 InterstitialAd)之后保留 timeScale = 0,并且在(例如 Rewarded)之后将 timeScale 返回 1,那么您需要位于同一文件夹中的 InterstitialClient 脚本并删除 AdBehaviour.ResumeGame()在 AddClickBehavior() 方法中。Rewarded也可以留timeScale = 0,需要RewardingAdBaseClient,需要去掉里面同样的AdBehaviour.ResumeGame()。
类似的东西