Fiz os codigós Igual ao da Aula e coloquei o Status publico porem a mensagem de erro aparece"NullReferenceException: Object reference not set to an instance of an object ControlaInterface.Start () (at Assets/Script/ControlaInterface.cs:15) ", poderia me dizer o que fiz de errado.
Controla Interface
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ControlaInterface : MonoBehaviour
{
private ControlaJogador scriptControlaJogador;
public Slider SliderVidaJogador;
// Start is called before the first frame update
void Start()
{
scriptControlaJogador = GameObject.FindWithTag("Personagem").GetComponent<ControlaJogador>();
SliderVidaJogador.maxValue = scriptControlaJogador.StatusJogador.Vida;
AtualizaSlider();
}
// Update is called once per frame
void Update()
{
}
public void AtualizaSlider()
{
SliderVidaJogador.value = scriptControlaJogador.StatusJogador.Vida;
}
}
E esse é o Controla Jogador
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ControlaJogador : MonoBehaviour
{
Vector3 direcao;
public LayerMask MascaraChao;
public GameObject TextoGameOver;
public bool Vivo = true;
private Rigidbody rigidbodyJogador;
public ControlaInterface scriptControlaInterface;
public AudioClip SomDeDano;
private MovimentaJogador meuMovimentaJogador;
private AnimacaoPersonagem animacaoJogador;
public Status StatusJogador;
// Update is called once per frame
void Start()
{
Time.timeScale = 1;
rigidbodyJogador = GetComponent<Rigidbody>();
meuMovimentaJogador = GetComponent<MovimentaJogador>();
animacaoJogador = GetComponent<AnimacaoPersonagem>();
StatusJogador = GetComponent<Status>();
}
void Update()
{
float eixoX = Input.GetAxis("Horizontal");
float eixoZ = Input.GetAxis("Vertical");
direcao = new Vector3(eixoX, 0, eixoZ);
animacaoJogador.Movimentar(direcao.magnitude);
if(Vivo==false)
{
if (Input.GetButtonDown("Fire1"))
{
SceneManager.LoadScene("game");
}
}
}
void FixedUpdate()
{
GetComponent<Rigidbody>().MovePosition
(GetComponent<Rigidbody>().position +
(direcao * StatusJogador.Velocidade * Time.deltaTime));
meuMovimentaJogador.RotaçaoJogador(MascaraChao);
}
public void TomarDano(int dano)
{
StatusJogador.Vida -= dano;
scriptControlaInterface.AtualizaSlider();
ControlaAudio.intancia.PlayOneShot(SomDeDano);
if (StatusJogador.Vida <= 0)
{
Time.timeScale = 0;
TextoGameOver.SetActive(true);
Vivo = false;
}
}
}