Unity-Technologies/UnityCsReference · error · NotSupportedException
PlayerSettings.phoneSplashScreenImage is deprecated. Use Set
Error message
PlayerSettings.phoneSplashScreenImage is deprecated. Use SetVisualAssetsImage() instead.
What it means
PlayerSettings.WSA.phoneSplashScreenImage was a string property that set the Windows Phone splash screen image path at 100% scale. Unity consolidated all per-scale WSA visual asset properties into the unified SetVisualAssetsImage(image, WSAImageType, WSAImageScale) API. The property carries [Obsolete(..., true)] which makes direct usage a compile-time error; the NotSupportedException is a secondary runtime defense for reflection or dynamic-dispatch access that bypasses the compiler.
Source
Thrown at Editor/Mono/PlayerSettingsWSA.cs:671
throw new NotSupportedException("PlayerSettings.phoneWideTile240 is deprecated. Use GetVisualAssetsImage() instead.");
}
set
{
throw new NotSupportedException("PlayerSettings.phoneWideTile240 is deprecated. Use SetVisualAssetsImage() instead.");
}
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[Obsolete("Use GetVisualAssetsImage()/SetVisualAssetsImage()", true)]
public static string phoneSplashScreenImage
{
get
{
throw new NotSupportedException("PlayerSettings.phoneSplashScreenImage is deprecated. Use GetVisualAssetsImage() instead.");
}
set
{
throw new NotSupportedException("PlayerSettings.phoneSplashScreenImage is deprecated. Use SetVisualAssetsImage() instead.");
}
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
[Obsolete("Use GetVisualAssetsImage()/SetVisualAssetsImage()", true)]
public static string phoneSplashScreenImageScale140
{
get
{
throw new NotSupportedException("PlayerSettings.phoneSplashScreenImageScale140 is deprecated. Use GetVisualAssetsImage() instead.");
}
set
{
throw new NotSupportedException("PlayerSettings.phoneSplashScreenImageScale140 is deprecated. Use SetVisualAssetsImage() instead.");
}
}
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]View on GitHub (pinned to 225b0fbdb5)
Solutions
- Replace the setter call with PlayerSettings.WSA.SetVisualAssetsImage(path, WSAImageType.SplashScreenImage, WSAImageScale._100)
- If accessing via reflection, switch to a direct method call or use GetVisualAssetsImage/SetVisualAssetsImage through the known API surface
- Remove all references to phoneSplashScreenImage and recompile to confirm no remaining [Obsolete] compile errors
- Update third-party plugin DLLs that reference the old property to a version built against the current Unity API
Example fix
// before
PlayerSettings.WSA.phoneSplashScreenImage = "Assets/Splash/splash.png";
// after
PlayerSettings.WSA.SetVisualAssetsImage("Assets/Splash/splash.png", WSAImageType.SplashScreenImage, WSAImageScale._100); Defensive patterns
Strategy: validation
Validate before calling
// Before calling, verify the API surface has migrated
var prop = typeof(PlayerSettings.WSA).GetProperty("phoneSplashScreenImage",
System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
if (prop != null && prop.GetSetMethod() != null)
{
var obsolete = prop.GetCustomAttribute<System.ObsoleteAttribute>();
if (obsolete != null)
Debug.LogError("phoneSplashScreenImage is deprecated. Use SetVisualAssetsImage() instead.");
} Try / catch
// Only relevant for reflection-based access
try
{
// Should not be used — migrate to SetVisualAssetsImage instead
}
catch (NotSupportedException ex) when (ex.Message.Contains("deprecated"))
{
Debug.LogError($"Deprecated WSA property access blocked: {ex.Message}. Migrate to SetVisualAssetsImage.");
} Prevention
- Treat all [Obsolete(..., true)] properties as compile errors and fix them before committing
- Run a periodic grep for deprecated WSA property names in editor scripts and third-party DLLs
- When upgrading Unity versions, review the upgrade guide for PlayerSettings.WSA API changes
When it happens
Trigger: Assigning to PlayerSettings.WSA.phoneSplashScreenImage via reflection (PropertyInfo.SetValue), dynamic keyword, or a pre-compiled legacy assembly that still references the old property setter.
Common situations: Build pipelines or editor automation scripts written for Unity pre-2018 that set phone splash screen images. Third-party plugins shipping compiled DLLs against an older Unity API surface. CI scripts that configure WSA player settings before building.
Related errors
- PlayerSettings.phoneSplashScreenImageScale140 is deprecated.
- PlayerSettings.phoneSplashScreenImageScale140 is deprecated.
- PlayerSettings.phoneSplashScreenImageScale240 is deprecated.
- PlayerSettings.phoneSplashScreenImageScale240 is deprecated.
- PlayerSettings.packageLogo140 is deprecated. Use GetVisualAs
AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13).
Data as JSON: /api/errors/ec84e96e8797bcb9.
Report an issue: GitHub.