@gorgey

Ошибка в скрипте, Unity ADS, как настроить?

Здравствуйте дорогие друзья. Сразу прошу простить нуба за вопрос, но без вашего участия не смогу разобраться. Нужно исправить скрипт, реклама включается в начале сцены, а нужно чтоб включалась каждые 5 проигрышей. Заранее благодарен, и всем успехов.

using UnityEngine;
using UnityEngine.Advertisements;
using System.Collections;

public class GameState : Singleton<GameState> {

	public bool startGame = false;
	public bool endGame = false;
	private Bird player;
	public BackgroundGame[] background;

	private CoinsManager coins;

	private static int advCount = 0;

	public GameObject uiEnd;
	public GameObject uiStart;
	public GameObject uiScore;
	public GameObject uiHightCoins;
	public bool deleteSave = false;

	public AudioSource music;

	void Start () {
		if (PlayerPrefs.GetString ("NoAds") != "yes") {
			if (Advertisement.isSupported) {
				Advertisement.Initialize ("1667763", false);
			}	else
				Debug.Log ("Platform is not supported");
			if (deleteSave)
				PlayerPrefs.DeleteAll ();

			player = FindObjectOfType<Bird> ();
			coins = FindObjectOfType<CoinsManager> ();

			uiEnd.SetActive(false);
			uiStart.SetActive (true);
			uiScore.SetActive (true);

			startGame = false;
			endGame = false;
			music.Stop ();}
		     }

		void Update () {
			if(PlayerPrefs.GetString ("NoAds") != "yes") {
				advCount++;
				if (Advertisement.IsReady ()&& advCount %5 == 0)
					Advertisement.Show();
				for (int i = 0; i < background.Length; i++) {
					if(!startGame)
					{
						background[i].enabled = false;
					}else{
						background[i].enabled = true;
					}
				}

				if(player.isDead)
				{
					endGame = true;
					startGame = false;
					music.Stop();
				}

				if(endGame)
				{
					if(coins.Coin > coins.MaxCoins)
					{
						coins.MaxCoins = coins.Coin;
						PlayerPrefs.SetInt("Coins", coins.MaxCoins);
						coins.MaxCoins = PlayerPrefs.GetInt("Coins");
						coins.UpdateHightCoins("<color=yellow>New </color>",coins.MaxCoins);
					}

					if(Input.GetMouseButtonDown(0))
						Application.LoadLevel(Application.loadedLevel + 0);

					uiEnd.SetActive(true);
					uiScore.SetActive(false);

				}

				if(!endGame)

					if (Input.GetMouseButtonDown (0) && !startGame)
					{
						startGame = true;
						endGame = false;
						music.Play();

						uiStart.SetActive (false);
					}
				}

           }

}
  • Вопрос задан
  • 692 просмотра
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
для начала, вставляйте код через специальный тэг
будет и форматирование и подсветка и возможность нормально его прочитать у других))


а по сути вопроса..
можно конечно просто написать вам правильный вариант, но давайте попробуем НАУЧИТЬСЯ..

вот вам пару намекающих вопросов
- вы в курсе что Update вызывается КАЖДЫЙ КАДР ?? и что у вас будет с advCount за первые же пять кадров?
- а где у вас собственно логика проигрыша ? (так то я вижу что вроде как в месте с проверкой флага player.isDead)
- а вы не думали что счетчик проигрышей надо как раз в месте проигрыша увеличивать?
- и возможно тогда в том же месте где увеличиваем счетчик проигрышей - стоит и сделать проверку на то что это ПЯТЫЙ по счету проигрышь и запустить рекламу)

судя по коду, если он ваш конечно, то проверка на "каждый пятый" - остатком от деления вы делать можете
и метод запуска отображения рекламы - тоже умеете запустить.

надеюсь вам это поможет. если не ясно из всех намеков - то я бы предложил какие то основы поглядеть и курсы простецкие , чтоб начать вырабатывать эдакое "программистско алгоритмическое" мышление))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@gorgey Автор вопроса
Все решил, спасибо всем.
using UnityEngine;
using UnityEngine.Advertisements;
using System.Collections;

public class GameState : Singleton<GameState> {

	public bool startGame = false;
	public bool endGame = false;
	private Bird player;
	public BackgroundGame[] background;

	private CoinsManager coins;

	private static int advCount = 0;

	public GameObject uiEnd;
	public GameObject uiStart;
	public GameObject uiScore;
	public GameObject uiHightCoins;
	public bool deleteSave = false;

	public AudioSource music;

	void Start () {
		if (PlayerPrefs.GetString ("NoAds") != "yes") {
			if (Advertisement.isSupported) {
				Advertisement.Initialize ("1667763", false);
			}	else
				Debug.Log ("Platform is not supported");
			if (deleteSave)
				PlayerPrefs.DeleteAll ();

			player = FindObjectOfType<Bird> ();
			coins = FindObjectOfType<CoinsManager> ();

			uiEnd.SetActive(false);
			uiStart.SetActive (true);
			uiScore.SetActive (true);

			startGame = false;
			endGame = false;
			advCount++;
			music.Stop ();}
	}

	void Update () {
		if(PlayerPrefs.GetString ("NoAds") != "yes") {
			if (Advertisement.IsReady ()&& advCount %5 == 0)
				Advertisement.Show();
			for (int i = 0; i < background.Length; i++) {
				if(!startGame)
				{
					background[i].enabled = false;
				}else{
					background[i].enabled = true;
				}
			}

			if(player.isDead)
			{
				endGame = true;
				startGame = false;
				music.Stop();
			}

			if(endGame)
			{
				if(coins.Coin > coins.MaxCoins)
				{
					coins.MaxCoins = coins.Coin;
					PlayerPrefs.SetInt("Coins", coins.MaxCoins);
					coins.MaxCoins = PlayerPrefs.GetInt("Coins");
					coins.UpdateHightCoins("<color=yellow>New </color>",coins.MaxCoins);
				}

				if(Input.GetMouseButtonDown(0))
					Application.LoadLevel(Application.loadedLevel + 0);

				uiEnd.SetActive(true);
				uiScore.SetActive(false);

			}

			if(!endGame)

			if (Input.GetMouseButtonDown (0) && !startGame)
			{
				startGame = true;
				endGame = false;
				music.Play();

				uiStart.SetActive (false);
			}
		}

	}

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы