1
resposta

Para que definir "minhaReserva"?

Olá! Fiquei um pouco confusa com a necessidade de termos que definir "minhaReserva" do script "ObjetoDaReservaDeInimigo" no script "ReservaDeInimigo". Ambos os códigos a seguir:

public class ObjetoDaReservaDeInimigos : MonoBehaviour
{
    private ReservaDeInimigos minhaReserva;

    public void Devolver(){
        this.minhaReserva.DevolverInimigo(this.gameObject);
    }

    public void SetReserva(ReservaDeInimigos reserva){
        this.minhaReserva = reserva; //AQUI
    }
}
public class ReservaDeInimigos : MonoBehaviour
{
    [SerializeField]
    private GameObject prefab;

    [SerializeField]
    private int quantidade;

    private Stack<GameObject> reservaDeInimigos;

    private void Start()
    {
        this.reservaDeInimigos = new Stack<GameObject>();
        this.CriarTodosOsInimigos();

    }

    private void CriarTodosOsInimigos(){

        for(var i = 0; i < this.quantidade; i++){
            var inimigo = GameObject.Instantiate(this.prefab, this.transform);
            var objetoDaReserva = inimigo.GetComponent<ObjetoDaReservaDeInimigos>(); //AQUI
            objetoDaReserva.SetReserva(this); //AQUI
            inimigo.SetActive(false);
            this.reservaDeInimigos.Push(inimigo);
        }

    }

    public GameObject PegarInimigo(){
        var inimigo = this.reservaDeInimigos.Pop();
        inimigo.SetActive(true);
        return inimigo;
    }

    public void DevolverInimigo(GameObject inimigo){
        inimigo.SetActive(false);
        this.reservaDeInimigos.Push(inimigo);
    }

    public bool TemInimigo(){
        return this.reservaDeInimigos.Count > 0;
    }

}

Por que não se é entendido que em this.minhaReserva.DevolverInimigo(this.gameObject); "minhaReserva" não faz referência a Reserva de Inimigos? sJá que temos a linha private ReservaDeInimigos minhaReserva; anteriormente e em inclusive this.minhaReserva.DevolverInimigo(this.gameObject); utilizamos um método da própria Reserva (DevolverInimigo())?

Não sei ficou muito confuso, posso tentar reformular minha pergunta se for o caso.

Obrigada desde já!! :)

1 resposta

Olá, tudo bem ?

Vi que sua dúvida foi aberta já tem um tempo :(

Será que conseguiu resolver ? :D

Se sim compartilha conosco como fez!