PERFORMANCE • ANDROID 60 FPS
HOW TO OPTIMIZE A UNITY GAME FOR ANDROID
The definitive studio checklist to achieve silky-smooth 60 FPS on low-end and flagship Android smartphones without sacrificing visual quality.
The 4 Mobile Optimization Pillars
1. Draw Calls: Keep Batches < 120 using Static/Dynamic Batching & Texture Atlasing.
2. Textures: Compress all textures to ASTC (6x6 or 8x8 block).
3. Shaders: Use Universal Render Pipeline (URP) with Unlit/Simple Lit shaders and disable realtime shadows for small props.
4. Memory & GC: Avoid Instantiate/Destroy inside gameplay loops — use Object Pooling.
1
Android Frame Rate & VSync Initialization Script
By default, Unity caps mobile games to 30 FPS. Unlock 60 FPS immediately at game launch with this script:
MobileQualityInitializer.cs (C#)
using UnityEngine;
public class MobileQualityInitializer : MonoBehaviour
{
private void Awake()
{
// 1. Force 60 FPS target refresh rate on mobile screens
Application.targetFrameRate = 60;
// 2. Disable VSync on mobile (let targetFrameRate handle pacing)
QualitySettings.vSyncCount = 0;
// 3. Keep screen alive during gameplay
Screen.sleepTimeout = SleepTimeout.NeverSleep;
// 4. Set FixedUpdate timestep to 50Hz (0.02s) to save CPU cycles
Time.fixedDeltaTime = 0.02f;
}
}
2
Studio Android Optimization Checklist
- Bake Lighting: Bake all static building and terrain shadows with Progressive GPU Lightmapper. Avoid dynamic cascading shadow maps on low-end chipsets.
- ASTC Compression: Go to Project Settings → Editor → Default Texture Compression Format and set to ASTC. Saves 75% VRAM and battery.
- Avoid Camera Post-Processing Stacks: Fullscreen Bloom and Depth of Field destroy mobile fill rate. Use additive shader particles instead of heavy camera post-processing.
- Zero GC in Update(): Eliminate
new Vector3()allocations,GameObject.Find(), and string concatenations insideUpdate().