Ошибка Unity UI: запрошенная операция вызвала переполнение стека - PullRequest
0 голосов
/ 18 сентября 2018

Итак, я создал этот тестовый графический интерфейс, который отображает игру поверх экрана, когда прожектор противника достигает вас.но когда это происходит, Unity аварийно завершает работу и замечает ошибку

StackOverflowException: The requested operation caused a stack overflow. 

Вот мой код сбоя:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;


public class GameUI : MonoBehaviour {

    public GameObject gameLoseUI;
   // public GameObject playerDiedUI;
    //public GameObject noEnergyUI;
    bool gameIsOver;

    // Use this for initialization
    void Start () {
        Guard.OnGuardHasSpottedPlayer += ShowGameLoseUI;
    }

    // Update is called once per frame
    void Update () {
        /*if (gameIsOver)
        {if (Input.GetKeyDown(KeyCode.Space))
            {
                SceneManager.LoadScene(0);
            }
        }*/     
    }

    void ShowGameLoseUI()
    {
        OnGameOver(gameLoseUI);
    }

    void OnGameOver(GameObject gameoverUI)
    {
        gameLoseUI.SetActive(true);
        gameIsOver = true;
        Guard.OnGuardHasSpottedPlayer += ShowGameLoseUI;
    }
}

Я думал, что ошибка может быть в пустом обновлении, но единство продолжает падать даже приэтот откомментированный фрагмент.Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 18 сентября 2018

Как указано в Комментариях, вы бесконечно подписываетесь на Guard.OnGuardHasSpottedPlayer при запуске GameOver, что вызывает исключение.

Измените += на -=

void OnGameOver(GameObject gameoverUI)
    {
        gameLoseUI.SetActive(true);
        gameIsOver = true;
        Guard.OnGuardHasSpottedPlayer -= ShowGameLoseUI;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...