Unity-Technologies/UnityCsReference · error · ArgumentException

The provided camera mode

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.

Solutions

  1. Only assign CameraMode values obtained from SceneView.GetBuiltinCameraMode or SceneView.AddCameraMode.
  2. Validate with sceneView.IsValidCameraMode (or SceneView's static check) before assigning.
  3. 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

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


AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13). Data as JSON: /api/errors/135d4ec440f3b9c7. Report an issue: GitHub.

Appendix: 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)