10/24/2022
Awake
Called immediately after initialization.
Won't be called when the gameobject is disabled.
OnEnable
Called every time when the script is enabled/disabled.
Start
Called after all objects in the scene have been initiated and their awake are called.
Won't be called when the gameobject is disabled.
OnDestroy
Called when the script is about to be destroyed.
Won't be called when the Awake is not called.
Use an initializer script to maintain the initiative and the destroy of all managers in the scene
The initializer should be guaranteed to call awake and OnDestroy
Other managers should inherit from a common interface to provide init and destroy functions that will be called by the initializer.