Component Lifecycle Methods
Complete reference for Needle Engine component lifecycle methods
Complete reference for all lifecycle methods available in Needle Engine components.
:::tip Performance Best Practice Only implement lifecycle methods you actually need. Empty update() loops on many components hurt performance! :::
Lifecycle Methods
Lifecycle methods are only called if declared. Don't add empty methods!
awake()
Component created
Initial setup, references
onEnable()
Component enabled
Subscribe to events
start()
First frame after creation
Initialization logic
earlyUpdate()
Before default update
Pre-update calculations
update()
Every frame
Main logic loop
lateUpdate()
After all updates
Follow cameras, final adjustments
onBeforeRender()
Just before render
Last-minute visual updates
onAfterRender()
After render
Post-processing logic
onDisable()
Component disabled
Unsubscribe from events
onDestroy()
Component/Object destroyed
Cleanup resources
Method Details
awake()
Called: When component is first created (before start())
Use for:
Setting up references
Initializing variables
Finding other components
Example:
onEnable()
Called: When component is enabled or re-enabled
Use for:
Subscribing to events
Starting processes
Resetting state
Example:
start()
Called: First frame after component creation (after awake(), after all awake() calls)
Use for:
Initialization that depends on other components
Starting coroutines
Initial state setup
Example:
earlyUpdate()
Called: Before update(), every frame
Use for:
Pre-update calculations
Input processing before main logic
Example:
update()
Called: Every frame (main update loop)
Use for:
Game logic
Movement
Animation
State updates
Example:
lateUpdate()
Called: After all update() calls, before render
Use for:
Camera following
Final position adjustments
Calculations that depend on other objects' updates
Example:
onBeforeRender()
Called: Just before the frame is rendered
Use for:
Last-minute visual updates
Shader parameter updates
Material property changes
Example:
onAfterRender()
Called: After the frame is rendered
Use for:
Post-processing logic
Statistics gathering
Frame cleanup
Example:
onDisable()
Called: When component is disabled
Use for:
Unsubscribing from events
Stopping processes
Cleanup (temporary)
Example:
onDestroy()
Called: When component or its GameObject is destroyed
Use for:
Final cleanup
Resource disposal
Removing global references
Example:
Execution Order
When disabling:
When destroying:
Best Practices
✅ DO
Only implement methods you need
Cache component references in
awake()orstart()Use
deltaTimefor frame-rate independent movementUnsubscribe from events in
onDisable()Clean up resources in
onDestroy()
❌ DON'T
Don't add empty
update()methodsDon't search for components every frame (use
findObjectOfTypesparingly)Don't forget to unsubscribe from events
Don't do heavy calculations in
update()without optimization
Related
Physics Events - Collision and trigger events
Input Events - User input handling
XR Events - WebXR-specific events
Lifecycle Hooks - Global hooks
Time API - Accessing time and deltaTime
Last updated