順番
- EditorApplication.playModeStateChanged の PlayModeStateChange.ExitingPlayMode
- MonoBehaviour.OnApplicationQuit
- Application.quitting
- MonoBehaviour.OnDestroy
- EditorApplication.playModeStateChanged の PlayModeStateChange.EnteredEditMode
検証用スクリプト
using UnityEngine;
public class Example : MonoBehaviour
{
private void Awake()
{
Application.quitting += () => Debug.Log( "quitting" );
}
private void OnApplicationQuit()
{
Debug.Log( "OnApplicationQuit" );
}
private void OnDestroy()
{
Debug.Log( "OnDestroy" );
}
#if UNITY_EDITOR
[RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )]
private static void RuntimeInitializeOnLoadMethod()
{
UnityEditor.EditorApplication.playModeStateChanged += OnChanged;
}
private static void OnChanged( UnityEditor.PlayModeStateChange change )
{
if ( change == UnityEditor.PlayModeStateChange.ExitingPlayMode )
{
Debug.Log( "ExitingPlayMode" );
}
if ( change == UnityEditor.PlayModeStateChange.EnteredEditMode )
{
Debug.Log( "EnteredEditMode" );
}
}
#endif
}