Unity Performance Optimization
Overview
Performance optimization for Unity games focusing on profiling and systematic optimization.
Foundation Required: unity-csharp-fundamentals (TryGetComponent, FindAnyObjectByType, null-safe coding)
Core Topics:
-
Unity Profiler analysis
-
Draw call reduction
-
GPU instancing and SRP Batcher
-
LOD (Level of Detail)
-
Occlusion culling
-
Object pooling
-
Memory optimization
Quick Start
Collection & Object Pooling
GC-free pooling is critical for performance. Use Unity's built-in UnityEngine.Pool namespace (2021.1+):
using UnityEngine.Pool;
// Temporary collection pooling - eliminates GC spikes List<Enemy> enemies; using (ListPool<Enemy>.Get(out enemies)) { GetComponentsInChildren(enemies); ProcessEnemies(enemies); } // Auto-released
See unity-collection-pool skill for comprehensive patterns:
-
ListPool, HashSetPool, DictionaryPool for temporary collections
-
ObjectPool for component/prefab pooling
-
Advanced patterns: Keyed pools, auto-return, ECS integration
Performance Targets
-
Mobile: 30-60 FPS, <100 draw calls
-
Desktop: 60+ FPS, <500 draw calls
-
VR: 90 FPS minimum, <200 draw calls
Profiling Workflow
-
Profile first: Identify actual bottleneck (CPU/GPU/Memory)
-
Measure baseline: Record before optimization
-
Optimize bottleneck: Focus on biggest impact
-
Measure improvement: Validate changes
-
Repeat: Until target performance reached
Optimization Checklist
CPU Optimization
-
✅ Reduce Update/FixedUpdate calls
-
✅ Object pooling for frequently spawned objects
-
✅ Cache component references in Awake/Start
-
✅ Use events instead of polling
GPU Optimization
-
✅ Static batching for static objects
-
✅ GPU instancing for identical meshes
-
✅ Reduce SetPass calls via material sharing
-
✅ LOD groups for distant objects
-
✅ Occlusion culling for large scenes
Memory Optimization
-
✅ Texture compression
-
✅ Mesh optimization (reduce vertex count)
-
✅ Audio compression and streaming
-
✅ Asset bundle management
-
✅ Unload unused assets
-
✅ Collection pooling (see unity-collection-pool skill)
Reference Documentation
Profiling and Optimization Patterns
Detailed profiling workflows:
-
Unity Profiler module usage
-
Draw call reduction techniques
-
GPU instancing and SRP Batcher patterns
Related Skills
- unity-collection-pool: GC-free collection management with ListPool, HashSetPool, DictionaryPool, and ObjectPool. Essential for eliminating GC spikes.
Best Practices
-
Profile on target platform: Editor performance differs
-
Optimize systematically: Measure, optimize, validate
-
Quality settings: Provide options for different hardware
-
Balance visuals vs performance: Adjust based on target
-
Test on low-end: Ensure minimum spec performance