Unity-Technologies/UnityCsReference · error · Exception
Unsupported PlayModeView type
Error message
Unsupported PlayModeView type
What it means
Thrown by PlayModeWindow.GetViewType() when the current main play mode view's runtime type is neither typeof(GameView) nor s_SimulatorWindowType. This is a fallback for an unrecognized window type — normally only GameView and SimulatorWindow exist as valid play mode views. The error indicates the editor has an unexpected or custom PlayModeView subclass as the active main window.
Source
Thrown at Editor/Mono/PlayModeView/PlayModeWindow.cs:77
GetOrCreateWindow().enterPlayModeBehavior = focused
? PlayModeView.EnterPlayModeBehavior.PlayFocused
: PlayModeView.EnterPlayModeBehavior.PlayMaximized;
}
public static bool GetPlayModeFocused()
{
return GetOrCreateWindow().enterPlayModeBehavior == PlayModeView.EnterPlayModeBehavior.PlayFocused;
}
public static PlayModeViewTypes GetViewType()
{
var type = GetOrCreateWindow().GetType();
if (type == typeof(GameView))
return PlayModeViewTypes.GameView;
if (type == s_SimulatorWindowType)
return PlayModeViewTypes.SimulatorView;
throw new Exception("Unsupported PlayModeView type");
}
public static void SetViewType(PlayModeViewTypes type)
{
var view = GetOrCreateWindow();
switch (type)
{
case PlayModeViewTypes.GameView:
view.SwapMainWindow(typeof(GameView));
return;
case PlayModeViewTypes.SimulatorView:
{
// DeviceSim is a Module that might be disabled in the future.
if (s_SimulatorWindowType == null)
{
throw new Exception("Cannot find the SimulatorWindow type.");
}
view.SwapMainWindow(s_SimulatorWindowType);View on GitHub (pinned to 225b0fbdb5)
Solutions
- If using a standard setup, ensure the Device Simulator module is properly installed and loaded so s_SimulatorWindowType initializes correctly.
- Avoid swapping to custom PlayModeView subclasses via SwapMainWindow if you need GetViewType() to work — it only recognizes the two built-in types.
- Check if the simulator type resolved: if s_SimulatorWindowType is null after a domain reload, trigger PlayModeWindow initialization or restart the editor.
Defensive patterns
Strategy: try-catch
Try / catch
try { var t = PlayModeWindow.GetViewType(); }
catch (Exception) { /* current view is not GameView or SimulatorView; handle gracefully */ } Prevention
- Avoid swapping the main window to non-standard PlayModeView subclasses if you need GetViewType() support.
- Ensure the Device Simulator module is installed so s_SimulatorWindowType initializes correctly.
- Be aware GetViewType only recognizes GameView and SimulatorWindow.
When it happens
Trigger: Calling GetViewType() when the main play mode view is a type other than GameView or SimulatorWindow. This can happen with custom play mode view implementations, or if s_SimulatorWindowType failed to initialize (was null at comparison time) while the actual window is a SimulatorWindow instance.
Common situations: Custom editor extensions that swap the main window to a non-standard PlayModeView subclass; simulator module version mismatch where s_SimulatorWindowType is not resolved yet; code reload scenarios where the static type cache is stale.
Related errors
- Type should derive from PlayModeView
- Cannot find the SimulatorWindow type.
- Value cannot be null. (Parameter 'playModeViews')
- Unexpected resultBits Span length. The expected length of re
- ScriptableBakedReflectionSystemWrapper
AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13).
Data as JSON: /api/errors/f651427a54fff785.
Report an issue: GitHub.