yotiky Tech Blog

とあるエンジニアの備忘録

Unity - アプリ終了時に非同期処理を実行して終了する

環境

  • Unity 2019.4.3f1

実装例

終了のイベントをフックして、非同期な後処理を呼びつつイベント自体はキャンセルし、後処理が終わったらそのままアプリが終了するようにします。

void Start()
{
    Application.wantsToQuit += Application_wantsToQuit;
}

private bool Application_wantsToQuit()
{
    CleanUp();
    return false;
}

bool cleanuping;
async void CleanUp()
{
    if (!cleanuping)
    {
        try
        {
            cleanuping = true;
            Debug.Log("Disposing ...");
            // 何か非同期な後処理
        }
        catch (Exception e)
        {
            Debug.LogError(e.Message);
        }
    }
    Application.wantsToQuit -= Application_wantsToQuit;
    Application.Quit();
}