What’s the best way to make a timer or just a delay in C#
The quickest I can think of is to use Invoke (if you don’t need parameters in your callback) or a coroutine with WaitForSeconds in its yield. If for any reason you cannot use neither, then you can use System.Timers.Timer
I advice against recommending System.Timers.Timer to beginners/intermediates because:
a) The alternatives are simpler.
b) It can introduce multithreading.
I definitely agree, but sometimes you may want a timer inside a non-monobehavior so you cannot use coroutines/invoke. Personally I try to handle it in coroutines.