A√ļn no tienes acceso a esta clase

Crea una cuenta y contin√ļa viendo este curso

Observer

28/31
Recursos

Aportes 3

Preguntas 0

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi√≥n.

No agregen el Deactivate al OnUpdateScore porque si no al eliminar un enemigo se desactivan todos.

Solucion al reto:

  • Primero extraje todos los metodos del GameManager y lo coloque en un nuevo archivo ScoreUI el cual sigue un patron singleton

 

Archivo ScoreUI.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class ScoreUI : MonoBehaviour
{
    public static ScoreUI instance;

    public Action OnUpdateScore;

    private void Awake()
    {
        if (instance != null)
        {
            Destroy(gameObject);
        }
        else
        {
            instance = this;
            OnUpdateScore += UpdateScoreUI;
        }
    }

    public void UpdateScoreUI()
    {
        // Cambiar el valor del score en la UI
        Debug.Log("Score actualizado");
    }

 

  • Luego cree un objeto vacio y le a√Īadi el script ScoreUI
     

     
     
  • Finalmente utilice la instancia del singleton en el archivo EnemyLife, reemplazando a la anterior instancia de GameManager

Archivo EnemyLife.cs

    private void OnDisable()
    {
        ScoreUI.instance.OnUpdateScore.Invoke();
    }
OBSERVER

Patr√≥n de dise√Īo que se encarga que muchos espectadores se notifiquen al haber un cambio en un objeto al que llamamos sujeto. Cuando este cambio se produce por lo general llamamos unas funciones o m√©todos espec√≠ficos para ese cambio que se produce.