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+):
csharp
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-poolskill for comprehensive patterns:
- •ListPool, HashSetPool, DictionaryPool for temporary collections
- •ObjectPool<T> 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-poolskill)
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