Как отследить закрытие игры и выполнить нужную функцию?

В Unity есть несколько способов отследить закрытие игры и выполнить нужную функцию. Вот некоторые из них:

1. Событие OnApplicationQuit(): Unity предоставляет событие OnApplicationQuit(), которое вызывается непосредственно перед закрытием игры. Чтобы использовать это событие, вам нужно создать класс, который наследуется от MonoBehaviour, и реализовать метод OnApplicationQuit(). Внутри этого метода вы можете выполнить нужную вам функцию. Например:

public class GameManager : MonoBehaviour
{
    private void OnApplicationQuit()
    {
        // Выполните нужную функцию перед закрытием игры
        SomeFunction();
    }

    private void SomeFunction()
    {
        // Ваш код
    }
}

2. Наследование от класса Application: Unity также предоставляет статический класс Application, у которого есть метод Quit(). Этот метод может быть вызван из любого места в коде, чтобы завершить игру. Вы можете вызвать этот метод, когда надо, и выполнить нужную функцию перед закрытием игры. Например:

public class GameManager : MonoBehaviour
{
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            QuitGame();
        }
    }

    private void QuitGame()
    {
        // Выполните нужную функцию перед закрытием игры
        SomeFunction();

        // Закрыть игру
        Application.Quit();
    }

    private void SomeFunction()
    {
        // Ваш код
    }
}

3. Обработчик событий приложения: Если вам нужно выполнить функцию перед закрытием игры, но при этом игра может закрываться не только при нажатии кнопки выхода, но и по другим причинам, вы можете использовать обработчики событий приложения. Unity предоставляет события OnApplicationFocus(bool hasFocus) и OnApplicationPause(bool pauseStatus), которые вызываются, когда приложение получает или теряет фокус, или когда оно приостанавливается или продолжается. Вы можете использовать эти события, чтобы вызвать нужную вам функцию. Например:

public class GameManager : MonoBehaviour
{
    private void OnApplicationFocus(bool hasFocus)
    {
        if (!hasFocus)
        {
            // Выполните нужную функцию перед потерей фокуса игры
            SomeFunction();
        }
    }

    private void OnApplicationPause(bool pauseStatus)
    {
        if (pauseStatus)
        {
            // Выполните нужную функцию перед приостановкой игры
            SomeFunction();
        }
    }

    private void SomeFunction()
    {
        // Ваш код
    }
}

Это лишь некоторые из способов отследить закрытие игры и выполнить нужную функцию в Unity. Вы можете выбрать наиболее подходящий для вашего проекта.