unity-performance
Optimize Unity game performance through profiling, draw call reduction, and resource management. Masters batching, LOD, occlusion culling, and mobile optimization. Use for performance bottlenecks, frame rate issues, or optimization strategies.
When & Why to Use This Skill
This Claude skill provides expert-level Unity performance optimization strategies, enabling developers to profile, identify, and resolve critical bottlenecks. By mastering draw call reduction, memory management, and platform-specific optimizations (Mobile/VR), users can significantly improve frame rates and stability using industry-standard best practices like object pooling and occlusion culling.
Use Cases
- Performance Profiling: Systematically analyzing CPU, GPU, and Memory usage via the Unity Profiler to pinpoint the root cause of frame rate drops.
- Draw Call Optimization: Reducing rendering overhead through SRP Batcher, static batching, and material optimization to minimize SetPass calls.
- Memory & GC Management: Implementing GC-free object pooling and collection pooling (using UnityEngine.Pool) to eliminate runtime stutters caused by garbage collection.
- Scene Optimization: Configuring Level of Detail (LOD) groups and Occlusion Culling to handle high-fidelity environments efficiently without overloading the GPU.
- Platform-Specific Tuning: Applying specialized optimization strategies for Mobile, Desktop, and VR to ensure consistent performance across varying hardware specifications.
| name | unity-performance |
|---|---|
| description | Optimize Unity game performance through profiling, draw call reduction, and resource management. Masters batching, LOD, occlusion culling, and mobile optimization. Use for performance bottlenecks, frame rate issues, or optimization strategies. |
| - csharp-plugin | csharp-code-style |
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-poolskill 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-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