Codigo da interface:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class ControlaInterface : MonoBehaviour {
private ControlaJogador scriptControlaJogador;
public Slider SliderVidaJogador;
public GameObject PainelDeGameOver;
public Text TextoDeSobrevivencia;
public Text TextoDeSobrevivenciaMaximo;
public float TempoMaximoSalvo;
void Start ()
{
scriptControlaJogador = GameObject.FindWithTag(Tags.Jogador).GetComponent<ControlaJogador>();
SliderVidaJogador.maxValue = scriptControlaJogador.statusJogador.VidaInicial;
AtualizarSliderVidaJogador();
Time.timeScale = 1;
TempoMaximoSalvo = PlayerPrefs.GetFloat("PontuacaoMaxima");
}
public void AtualizarSliderVidaJogador()
{
SliderVidaJogador.value = scriptControlaJogador.statusJogador.Vida;
}
public void Gameover()
{
PainelDeGameOver.SetActive(true);
Time.timeScale = 0;
int minutos = (int)Time.timeSinceLevelLoad / 60;
int segundos = (int)Time.timeSinceLevelLoad % 60;
TextoDeSobrevivencia.text = "You survived for " + minutos + "min and " + segundos + "s";
AjustarPontuacaoMaxima(minutos, segundos);
}
public void Reiniciar()
{
SceneManager.LoadScene(Tags.Game);
}
void AjustarPontuacaoMaxima(int min, int s)
{
if(Time.timeSinceLevelLoad > TempoMaximoSalvo)
{
TempoMaximoSalvo = Time.timeSinceLevelLoad;
TextoDeSobrevivenciaMaximo.text = string.Format("Your best time is: {0}min and {1}s", min, s);
PlayerPrefs.SetFloat("PontuacaoMaxima", TempoMaximoSalvo);
}
if(TextoDeSobrevivenciaMaximo.text == "")
{
min = (int)TempoMaximoSalvo / 60;
s = (int)TempoMaximoSalvo % 60;
TextoDeSobrevivenciaMaximo.text = string.Format("Your best time is: {0}min and {1}s", min, s);
}
}
}
Codigo do controle da arma:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControlaArma : MonoBehaviour {
public GameObject Bala;
public GameObject CanoDaArma;
public AudioClip SomDoTiro;
void Update (){
if (Input.GetButtonDown(Tags.Fire1)){
Instantiate(Bala, CanoDaArma.transform.position, CanoDaArma.transform.rotation);
ControlaAudio.instancia.PlayOneShot(SomDoTiro);
}
}
}
Solucionei temporariamente adicionando a condicao de conferencia do estado do timeScale. Mas gostaria de saber se eh algum erro em algum dos scripts.
void Update (){ if (Input.GetButtonDown(Tags.Fire1) && Time.timeScale != 0) { Instantiate(Bala, CanoDaArma.transform.position, CanoDaArma.transform.rotation); ControlaAudio.instancia.PlayOneShot(SomDoTiro); } }