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 inside Update().

Calculate Frame Budget