Unity-Technologies/UnityCsReference · error · ArgumentException
The provided camera mode {0} is not registered!
Error message
The provided camera mode {0} is not registered! What it means
Thrown by the SceneView.cameraMode setter when IsValidCameraMode returns false for the provided CameraMode. The setter requires the mode to be registered either as a builtin mode or as a user-defined mode added via AddCameraMode. Passing an unregistered or stale CameraMode struct triggers this guard.
Source
Thrown at Editor/Mono/SceneView/SceneView.cs:746
internal SceneOrientationGizmo m_OrientationGizmo;
public CameraMode cameraMode
{
get
{
// fix for case 969889 where the toolbar is empty when we haven't fully initialized the value
if (string.IsNullOrEmpty(m_CameraMode.name))
{
m_CameraMode = SceneRenderModeWindow.GetBuiltinCameraMode(m_CameraMode.drawMode);
}
return m_CameraMode;
}
set
{
if (!IsValidCameraMode(value))
{
throw new ArgumentException(string.Format("The provided camera mode {0} is not registered!", value));
}
m_CameraMode = value;
if (onCameraModeChanged != null)
onCameraModeChanged(m_CameraMode);
}
}
[Obsolete("m_ValidateTrueMetals has been deprecated. Use validateTrueMetals instead (UnityUpgradable) -> validateTrueMetals", true)]
public bool m_ValidateTrueMetals = false;
[SerializeField]
bool m_DoValidateTrueMetals = false;
public bool validateTrueMetals
{
get => m_DoValidateTrueMetals;
View on GitHub (pinned to 225b0fbdb5)
Solutions
- Only assign CameraMode values obtained from SceneView.GetBuiltinCameraMode or SceneView.AddCameraMode.
- Validate with sceneView.IsValidCameraMode (or SceneView's static check) before assigning.
- Re-add custom modes via AddCameraMode after domain reloads before referencing them.
Example fix
// before
sceneView.cameraMode = myCachedMode;
// after
if (SceneView.GetBuiltinCameraMode(myCachedMode.drawMode).name == myCachedMode.name || IsUserDefinedModeRegistered(myCachedMode))
sceneView.cameraMode = myCachedMode;
else
sceneView.cameraMode = SceneView.GetBuiltinCameraMode(DrawCameraMode.Textured); Defensive patterns
Strategy: validation
Validate before calling
bool CanSetCameraMode(SceneView sv, CameraMode mode)
{
return sv.IsValidCameraMode(mode);
} Prevention
- Only assign CameraMode values obtained from GetBuiltinCameraMode or AddCameraMode.
- Re-register user-defined modes after domain reloads before referencing them.
When it happens
Trigger: Constructing a CameraMode manually with arbitrary values and assigning it. Holding a reference to a CameraMode that was never added via AddCameraMode. A mode from a different Unity version or a mode removed after a domain reload.
Common situations: Caching a CameraMode across editor sessions where user-defined modes don't persist. Copying a CameraMode struct from another SceneView that has different registered modes. Editor scripts that fabricate CameraMode values.
Related errors
- Use cameraMode to set user-defined modes
- Cannot be null or empty
- A mode named {0} already exists in section {1}
- Attempting to set an incorrect number of icons for {namedBui
- The setting label can't be null or empty.
AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13).
Data as JSON: /api/errors/135d4ec440f3b9c7.
Report an issue: GitHub.