PERFORMANCE • MOBILE ANDROID
HOW TO FIX GAME LAG & LOW FPS ON ANDROID
Diagnose and eliminate micro-stuttering, Garbage Collection pauses, shader compilation hitches, and thermal throttling in Unity.
Why Does a Game Run Smoothly on PC but Lag on Mobile?
Desktop graphics cards have active fan cooling, massive dedicated VRAM buffers, and high single-core CPU clocks. Mobile SoCs share system RAM between the CPU and GPU, rely entirely on passive aluminum heatsinks, and will aggressively downclock CPU cores when device surface temperatures exceed 42°C.
The 5-Step Android Performance Fix
1. Lock Target Frame Rate
Set
Application.targetFrameRate = 60; and QualitySettings.vSyncCount = 0; at game startup. Uncapped frame rates overheat mobile GPUs in simple UI menus!
2. Clamp Shadow Cascades & Distance
In URP Asset settings, limit Shadow Distance to 35-50 meters and set Cascade Count to 1 or 2 (never 4 on mobile).
3. Use ASTC Texture Compression
Switch all textures to ASTC 6x6 or ASTC 8x8. Reduces memory bus bandwidth by up to 75%.
4. Replace Instantiate with Object Pools
Recycle bullets, particles, and enemies to prevent the Garbage Collector from freezing the frame loop every 10 seconds.
Mobile Bootstrap Script
using UnityEngine;
public class MobilePerformanceBootstrap : MonoBehaviour
{
private void Awake()
{
// 1. Force 60 FPS refresh rate
Application.targetFrameRate = 60;
// 2. Prevent mobile screens from sleeping during gameplay
Screen.sleepTimeout = SleepTimeout.NeverSleep;
// 3. Optional: Dynamic render scaling for low-end hardware
// ScalableBufferManager.ResizeBuffers(0.85f, 0.85f);
}
}
Related Mobile Optimization Guides
Frequently Asked Questions
This is textbook GPU/CPU Thermal Throttling. The device's silicon reached its thermal cutoff limit (usually around 42°C-45°C), forcing the operating system kernel to throttle clock frequencies in half to protect battery life. Lower your shadow resolution, compress textures with ASTC, and clamp render scale to
0.85 on 1080p+ screens.