Unity
- Use `MonoBehaviour` lifecycle methods in order: `Awake` → `OnEnable` → `Start` → `Update` → `FixedUpdate` → `LateUpdate`. Use `[SerializeField]` for inspector-exposed private fields — avoid public fields. Use object pooling for frequently spawned objects.
Unity
- Use `MonoBehaviour` lifecycle methods in order: `Awake` → `OnEnable` → `Start` → `Update` → `FixedUpdate` → `LateUpdate`. Use `[SerializeField]` for inspector-exposed private fields — avoid public fields. Use object pooling for frequently spawned objects.
- Use ScriptableObjects for shared data and configuration — they don't require GameObjects. Use `GetComponent<T>()` in `Awake()` and cache the result — never call it in `Update()`. Use coroutines (`IEnumerator` + `yield`) for time-based sequences. Use the new Input System over legacy `Input.GetKey()`. Organize with assembly definitions (`.asmdef`) for faster compile times.