Holds one localized Android launcher icon per screen density.
Android keeps a separate icon per screen density and picks the closest match for the device, so this type holds one
texture for each. Assign every density: Android matches the locale before the density, so a locale that supplies
only some densities still wins for the rest and the device scales the wrong size instead of taking the icon from
the Player Settings. Unity writes a locale only when all of its densities resolve, and reports the ones missing.
Leaving the whole set empty is the way to keep the Player Settings icons for a locale.
Additional resources: AppInfo, IconDensity, LocalizedTexture
Assign a localized icon for one density.
using Unity.Localization; using Android = Unity.Localization.Android;
namespace Unity.Localization.Samples { public class AndroidIconsExample { // Every density has to be assigned, or the locale keeps the icons from the Player Settings. static readonly (Android.IconDensity density, string key)[] k_Icons = { (Android.IconDensity.Low, "Launcher Icon ldpi"), (Android.IconDensity.Medium, "Launcher Icon mdpi"), (Android.IconDensity.High, "Launcher Icon hdpi"), (Android.IconDensity.ExtraHigh, "Launcher Icon xhdpi"), (Android.IconDensity.ExtraExtraHigh, "Launcher Icon xxhdpi"), (Android.IconDensity.ExtraExtraExtraHigh, "Launcher Icon xxxhdpi") };
public void Run(Android.AppInfo appInfo) { foreach (var (density, key) in k_Icons) appInfo.LegacyIcons.GetIcon(density).SetReference("App Icons", key); } } }