L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

Unity

Unity

Avoid common Unity mistakes — lifecycle ordering, GetComponent caching, physics timing, and Unity's fake null.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: Unity slug: unity version: 1.0.0 description: Avoid common Unity mistakes — lifecycle ordering, GetComponent caching, physics timing, and Unity's fake null. homepage: https://clawic.com/skills/unity metadata: clawdbot: emoji: 🎮 os: - linux - darwin - win32 displayName: Unity

Lifecycle Order

  • Awake before Start — use Awake for self-init, Start for cross-references
  • OnEnable called before Start — but after Awake
  • Order between scripts not guaranteed — use Script Execution Order if needed
  • Awake called even if disabled — Start only when enabled

GetComponent Performance

  • GetComponent every frame is slow — cache in Awake or Start
  • GetComponentInChildren searches recursively — expensive on deep hierarchies
  • TryGetComponent returns bool — avoids null check, slightly faster
  • Use RequireComponent attribute — ensures dependency, documents requirement

Physics Timing

  • Physics in FixedUpdate, not Update — consistent regardless of framerate
  • FixedUpdate can run 0 or multiple times per frame — don't assume 1:1
  • Rigidbody.MovePosition in FixedUpdate — transform.position bypasses physics
  • Time.deltaTime in Update, Time.fixedDeltaTime in FixedUpdate — or just use deltaTime

Unity's Fake Null

  • Destroyed objects aren't truly null — == null returns true, but object exists
  • Null-conditional ?. doesn't work properly — use == null or bool conversion
  • Destroy doesn't happen immediately — object gone next frame
  • Use DestroyImmediate only in editor — causes issues in builds

Coroutines

  • StartCoroutine needs MonoBehaviour active — disabled/destroyed stops coroutines
  • yield return null waits one frame — yield return new WaitForSeconds(1) for time
  • StopCoroutine needs same method or Coroutine reference — string overload unreliable
  • Can't return values — use callbacks or set field in coroutine

Instantiate and Pooling

  • Instantiate is expensive — pool frequently created/destroyed objects
  • Instantiate(prefab, parent) sets parent — avoids extra SetParent call
  • SetActive(false) before returning to pool — not Destroy
  • Pool inactive objects under a parent — keeps hierarchy clean

Serialization

  • [SerializeField] for private fields in inspector — prefer over public
  • public fields auto-serialize — but exposes API you may not want
  • [HideInInspector] hides but still serializes — [NonSerialized] to skip entirely
  • Serialized fields keep inspector values — code defaults ignored after first serialize

ScriptableObjects

  • Data containers that live as assets — share between scenes/prefabs
  • CreateAssetMenu attribute for easy creation — right-click → Create
  • Don't modify at runtime in builds — changes not saved (except in editor)
  • Great for config, item databases — reduces prefab duplication

Common Mistakes

  • Find methods every frame — cache references
  • String comparisons for tags — use CompareTag("Enemy"), not tag == "Enemy"
  • Physics queries allocate — use NonAlloc variants: RaycastNonAlloc
  • UI anchors wrong — stretches unexpectedly on different resolutions
  • async/await without context — use UniTask or careful error handling
Skills enregistrées