1โฃ ๐ฐ๐ ๐๐๐: always called before any ๐๐๐๐๐ & after a prefab is instantiated
2โฃ ๐พ๐๐ด๐๐๐๐๐: called just after a ๐ถ๐๐๐๐พ๐๐๐๐๐ is enabled (including when loaded, created, or a ๐ผ๐๐๐๐ฑ๐๐๐๐๐๐๐๐ script is added)
3โฃ ๐๐๐๐๐: called before the first frame update. This happens only if the script is enabled. ๐๐๐๐๐ can also be made into a coroutine by changing its return type to ๐ธ๐ด๐๐๐๐๐๐๐๐๐
They might be out-of-synch with the game logic. To fix this, you can use ๐ข๐๐๐๐ ๐๐๐๐๐ต๐๐๐ต๐๐ก๐๐๐๐๐๐๐๐ in a coroutine.
๐น๐จ๐ฝ๐ฑ๐ฎ๐๐ฒ ๐ข๐ฟ๐ฑ๐ฒ๐ฟ
7โฃ ๐๐๐๐๐๐: called once per frame on any active game object. This is where you want to put most of your game logic.
This is also where you should call one-time event input functions such as:
๐ธGetKeyDown
๐ธGetKeyUp
๐ธGetButtonDown
๐ธGetButtonUp
That is very confusing! ๐
So this is a quick & overly simplified table to show you which methods should be safe to call from which event functions.
TL;DR:
๐ธOne-time input events & game logic? โ ๐๐๐๐๐๐
๐ธAffecting physics over multiple frames? โ ๐ต๐๐ก๐๐๐๐๐๐๐๐
8โฃ ๐ป๐๐๐๐๐๐๐๐๐: called after *all* ๐๐๐๐๐๐ functions have been called.
It is pretty handy because you can assume that all game objects have been correctly updated.
๐ ๐พ๐๐ณ๐๐๐๐๐๐: this method mirrors the behaviour of ๐พ๐๐ด๐๐๐๐๐, being called when the ๐ผ๐๐๐๐ฑ๐๐๐๐๐๐๐๐ becomes disabled or inactive.
There are many more methods I could simply not fit in this thread. ๐คฏ
Most of the info comes from the official Unity documentation. You should definitely have a look at it if you are interested! ๐๐