i make a simple 2d scene in unity 2017.3.1f1 (only 5 sprite renderer). I realized that when my Android device's battery is under 20 %, the frame rate will be 60 to 30. I did all the optimizations I heard, like:
DynamicBatching, Sprite Atlas , Quality Setting , sprite Texture Comprestion Override for Android And I emphasize that my scene contains only 5 sprite (one background and several buttons)
i use Application.targetFrameRate = 60; because if don't , all time The motions are stuttering Whether the battery is over 20% or not.
And when the vsync is off, the frame is locked to 30 and when it's turned on, it changes for about half a second between 30 and 60
according to profiler (on my android device) Gfx.WaitForPresent start growing!!! (if you want to say it is GPU bound , i think render time don't grow And scence is very simple)
In all these modes, The motions are stuttering.
I tested two kinds of moves
1: Moving camera in the update method by the following code:
void Update () {
if(startMvCm){
if (cam.position.y > EndCm ) {
cam.Translate(0f,(speedCm*Time.fixedDeltaTime),0);
} else {
cam.position = new Vector2(0,EndCm);
startMvCm = false;
}
}
}
2: An animation of moving an image in canvas (simple UI menu with 5 button) using Animator.
And this low FPS see more in low Battery on my Huawei Mate 10 Lite
Time.deltaTime
). \$\endgroup\$