Таймер Unity не увеличивается при перезапуске уровня - PullRequest
0 голосов
/ 04 марта 2019

то, что я думал, было бы просто, оказывается трудным.У меня есть таймер, который сообщает мне в секундах, как долго длится игра, и я хочу, чтобы он перезагружался при каждом перезапуске игры.вот код, который я написал.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TimeManager : MonoBehaviour {

    public static int time= (int)Time.time;


    private void Start()
    {
        time = 0;
    }

    public void Update()
    {
        time +=  (int) Time.time;

    }

}

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

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

просто обновление для тех, у кого такая же проблема, как и у меня.я решил эту проблему с помощью этого кода.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TimeManager : MonoBehaviour
{
    public static int time=0;

    private void Start()
    {
        time = (int)Time.timeSinceLevelLoad;
    }

    public void Update()
    {
        time = (int)Time.timeSinceLevelLoad;
        Debug.Log("time" + time);
    }
}

это вычисляет время с момента загрузки уровня каждый раз, поэтому, когда мой игрок умирает и перезапускается, он начинает считать с 0

0 голосов
/ 04 марта 2019

Переменные времени по умолчанию

В Unity есть несколько встроенных переменных времени, которые могут выполнять ту же задачу.

Например:

  • Time.realtimeSinceStartup (Это даст время в секундах с момента запуска игры)
  • Time.timeSinceLevelLoad (Время в секундах с момента загрузки сцены)

Ссылка: https://docs.unity3d.com/ScriptReference/Time.html

Пользовательский сценарий:

Если вы хотите, чтобы ваш сценарий обрабатывал время, вам нужно изменить несколько вещей:

  • InПриращение функции обновления должно быть Time.deltaTime вместо Time.time.(Time.deltaTime даст время с последнего кадра)
  • Тип переменной времени должен быть плавающим, в противном случае преобразование Time.deltaTime в целое число всегда будет давать ноль.

    public class TimeManager : MonoBehaviour 
    {    
        public static float time = 0;
    
        void Start()
        {
            time = 0;
        }
    
        void Update()
        {
            time += Time.deltaTime;
        }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...