После показа рекламы admob автоматически устанавливает timeScale на 1
Есть метод, который отвечает за паузу в игре. Когда пользователь включает паузу, через раз показывается межстраничная реклама. Когда реклама не показывается, всё хорошо, если же реклама показывается, во время рекламы 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;
}
Ответы (1 шт):
Если ты используешь Google AdMob, то при показе рекламы выполняются методы из этого скрипта.
public class DummyAdBehaviour : MonoBehaviour
{
public void PauseGame()
{
Time.timeScale = 0;
Debug.Log("Pause Game");
}
public void ResumeGame()
{
Time.timeScale = 1;
Debug.Log("Resume Game");
}
public GameObject ShowAd(GameObject dummyAd, Vector3 position)
{
return Instantiate(dummyAd, position, Quaternion.identity) as GameObject;
}
public void DestroyAd(GameObject dummyAd)
{
Destroy(dummyAd);
}
}
Он находится в папке Assets\GoogleMobileAds\Platforms\Unity
Если тебе надо сделать так, чтобы после всех типов реклам timeScale оставался на нуле, то просто в методе ResumeGame() удаляешь строчку Time.timeScale = 1;
Если тебе надо после конкретной рекламы, например InterstitialAd оставлять timeScale = 0, а после, например Rewarded, возвращать timeScale на 1, то тебе нужен скрипт InterstitialClient, который находится в той же папке и в методе AddClickBehavior() удаляешь AdBehaviour.ResumeGame(). Также можно у Rewarded оставлять timeScale = 0, нужен RewardingAdBaseClient, и в нем надо удалить все тот же AdBehaviour.ResumeGame().
Вот как-то так