@13MadDog37

(Показ рекламы)Как запустить метод один раз, в определённый промежуток времени?

При просмотре не пропускаемой рекламы у игрока вычитается его общее количество шагов (сделанных в игре) из его шагов что он сделал на конкретном уровне. Вот код вычитания.
public void RewardForRewardedAds()
    {
        StepsAllGame -= StepsOneLvl;
        Debug.Log(StepsAllGame);
        Trigger.S.AdsReturnToTGame();
        SaveSteps();
    }

Затем когда он умирает , вызывается меню просмотра рекламы и там я запускаю этот же код :
public void OnUnityAdsShowComplete(string placementId, UnityAdsShowCompletionState showCompletionState)
    {
        if (_adUnitId.Equals(_adUnitId) && showCompletionState.Equals(UnityAdsShowCompletionState.COMPLETED))
        {
            SwipeDetecion.A.RewardForRewardedAds();
            Advertisement.Load(_adUnitId , this);
        }
    }


Только вот проблема вот в чём , код выполняется несколько раз и в итоге вычитает не правильное значение (допустим общее количество шагов = 10 , а шагов за уровень = 5 . Я из 10 вычитаю 5 = 5 (так должно быть) , но у меня получаются случайные числа 2,4, 8 и тд. В консоли я вижу что он вычитает несколько раз за секунду , и это всегда рандомно сколько раз (может выполнить вычитание 2 раза может 5)) Так вот я подумал , может быть что бы это предотвратить нужно сделать некаю задержку , что бы скрипт вычитался 1 раз и тп.
Вот только как это сделать я не знаю(
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 1
@NIKROTOS
Начинающий программист.
Звучит так, как будто, вычитание происходит несколько раз, в зависимости от текущей частоты процессора. Я бы предложил, при смерти менять инвертировать флаг(Булеву переменную), при вычитании проверять флаг, и если была смерть, инвертировать его и делать действия.( после этого код будет выполняться один раз)
Так-же скрипт должен зависеть от времени, значит это время надо запросить и сравнить с предыдущем, ели промежуток больше, то скрипт выполняется.
Время можно получать с телефона(жди обхода системы игроками, через изменение времени) или запросить на вебресурсе.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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