Player Settings that matter
Assets/
Scripts/
Project settings
you already havethis lesson adds
The touch canvas you built in tab 03 is the reason this tab matters: without the right orientation, safe area and architecture settings, the controls the Knight needs will not be where the thumbs are.
Player Settings has around two hundred options. Twelve of them decide whether your build works, ships and passes review.
Orientation and safe area decide whether your UI survives contact with a real phone.
Identity — set this before your first build
- 1
. Set Company Name and Product Name.
- 2
Other Settings → Package Name: com.yourstudio.yourgame. This is permanent — Google Play identifies your app by it forever.
- 3
Version 1.0.0 and Bundle Version Code 1. Increase the code by one for every upload; Play rejects duplicates.
- 4
Set the app icon in Icon → Adaptive. Android needs a foreground and a background layer, not one flat image.
Resolution and Presentation
Default Orientation → Landscape Left, or Portrait. Auto Rotation with only one sensible option just annoys players.
Render Outside Safe Area: leave it ticked so the game fills the screen, then handle the notch in UI with Screen.safeArea.
Untick Optimized Frame Pacing only if you see stutter; on most devices it helps.
Other Settings — the ones that break builds
- 1
Scripting Backend → IL2CPP. Mono is not allowed on the Play Store for 64-bit and IL2CPP is much faster anyway.
- 2
Target Architectures → tick both ARMv7 and ARM64. ARM64 is mandatory; ARMv7 covers older phones.
- 3
Minimum API Level 23 or 24 (Android 6–7) reaches almost everyone. Target API Level → Automatic (highest installed).
- 4
Managed Stripping Level → Medium. High strips more but can remove code only reached by reflection.
- 5
Graphics APIs → untick Auto, keep Vulkan first and OpenGLES3 second. Remove OpenGLES2 entirely.
<linker>
<assembly fullname="Assembly-CSharp">
<type fullname="SaveData" preserve="all" />
<namespace fullname="Game.Data" preserve="all" />
</assembly>
</linker>APK or AAB?
✓ APK
✓ AAB (App Bundle)
Frame rate — Unity does not do this for you
using UnityEngine;
public class MobileBoot : MonoBehaviour
{
void Awake()
{
// mobile defaults to 30 fps unless you say otherwise
Application.targetFrameRate = 60;
// VSync must be off for targetFrameRate to be respected
QualitySettings.vSyncCount = 0;
// stop the screen dimming during gameplay
Screen.sleepTimeout = SleepTimeout.NeverSleep;
DontDestroyOnLoad(gameObject);
}
}