è comparso questo errore:"Assets/codes/BossSpawner.cs(16,35): error CS1061: 'EnemyManager' does not contain a definition for 'OnAllEnemiesDefeated' and no accessible extension method 'OnAllEnemiesDefeated' accepting a first argument of type 'EnemyManager' could be found (are you missing a using directive or an assembly reference?)
"

i codici sono:"using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;

public class EnemyManager : MonoBehaviour
{
    public static EnemyManager instance;  // Singleton per accedere da altri script
    private int totalEnemies = 0;         // Numero totale di nemici
    private int enemiesKilled = 0;        // Numero di nemici uccisi

    // Evento per notificare quando tutti i nemici sono stati sconfitti
    public event System.Action OnAllEnemiesDefeated;

    private void Awake()
    {
        // Imposta l'istanza di questo manager
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject); // Mantieni questo GameObject tra le scene
        }
        else
        {
            Destroy(gameObject);
        }
    }

    // Metodo per aggiungere nemici al conteggio totale
    public void AddEnemies(int count)
    {
        totalEnemies += count;
        Debug.Log("Nemici totali: " + totalEnemies);
    }

    // Metodo per chiamare quando un nemico viene ucciso
    public void EnemyKilled()
    {
        enemiesKilled++;
        Debug.Log("Nemici uccisi: " + enemiesKilled);

        // Se tutti i nemici sono stati uccisi, invoca l'evento
        if (enemiesKilled >= totalEnemies)
        {
            // Invoca l'evento che tutti i nemici sono stati sconfitti
            OnAllEnemiesDefeated?.Invoke();

            // Rimuovi o commenta questa linea se non vuoi cambiare scena immediatamente
            // StartCoroutine(LevelCompleted());
        }
    }

    // Metodo chiamato quando il boss viene sconfitto
    public void BossDefeated()
    {
        // Puoi aggiungere logica aggiuntiva qui, se necessario

        // Avvia la coroutine per completare il livello
        StartCoroutine(LevelCompleted());
    }

    private IEnumerator LevelCompleted()
    {
        // Inizia la dissolvenza della musica
        Audio_Manager audioManager = FindObjectOfType<Audio_Manager>();
        if (audioManager != null)
        {
            audioManager.FadeOutMusic();
        }

        // Attendi la durata della dissolvenza prima di caricare la nuova scena
        if (audioManager != null)
        {
            yield return new WaitForSeconds(audioManager.fadeDuration);
        }
        else
        {
            // Se l'audioManager non viene trovato, attendi una durata predefinita
            yield return new WaitForSeconds(2f); // Regola questa durata secondo le tue necessità
        }

        // Cambia scena dopo la dissolvenza
        SceneManager.LoadScene(4);  // Sostituisci con il nome o l'indice della prossima scena
    }
}","using UnityEngine;
using System.Collections;

public class BossSpawner : MonoBehaviour
{
    public GameObject bossPrefab;    // Il prefab del boss da generare
    public float spawnDelay = 2f;    // Ritardo dopo il quale il boss verrà generato

    private bool bossSpawned = false;

    private void Start()
    {
        // Iscrivi il metodo all'evento OnAllEnemiesDefeated dell'EnemyManager
        if (EnemyManager.instance != null)
        {
            EnemyManager.instance.OnAllEnemiesDefeated += OnAllEnemiesDefeated;
        }
    }

    private void OnAllEnemiesDefeated()
    {
        if (!bossSpawned)
        {
            bossSpawned = true;
            StartCoroutine(SpawnBossAfterDelay());
        }
    }

    private IEnumerator SpawnBossAfterDelay()
    {
        // Attendi il ritardo specificato
        yield return new WaitForSeconds(spawnDelay);

        // Genera il boss
        SpawnBoss();
    }

    private void SpawnBoss()
    {
        if (bossPrefab != null)
        {
            Instantiate(bossPrefab, transform.position, Quaternion.identity);
            Debug.Log("Boss generato!");
        }
        else
        {
            Debug.LogError("Boss prefab non assegnato!");
        }
    }

    private void OnDestroy()
    {
        // Annulla l'iscrizione all'evento per evitare memory leaks
        if (EnemyManager.instance != null)
        {
            EnemyManager.instance.OnAllEnemiesDefeated -= OnAllEnemiesDefeated;
        }
    }
}"