Unity-Technologies/UnityCsReference · error · ArgumentException

Use cameraMode to set user-defined modes

Error message

Use cameraMode to set user-defined modes

What it means

Thrown by the obsolete SceneView.renderMode setter when the value is DrawCameraMode.UserDefined. The renderMode property is deprecated in favor of cameraMode; user-defined modes cannot be assigned through renderMode because it only handles builtin modes. The setter delegates to SceneRenderModeWindow.GetBuiltinCameraMode which cannot resolve user-defined entries.

Source

Thrown at Editor/Mono/SceneView/SceneView.cs:721

        internal static event Func<SceneView, VisualElement> addCustomVisualElementToSceneView;

        // Used for performance tests
        [AutoStaticsCleanupOnCodeReload]
        internal static event Action<SceneView> onGUIStarted;
        [AutoStaticsCleanupOnCodeReload]
        internal static event Action<SceneView> onGUIEnded;

        [Obsolete("Use cameraMode instead", false)]
        public DrawCameraMode m_RenderMode = 0;

        [Obsolete("Use cameraMode instead", false)]
        public DrawCameraMode renderMode
        {
            get => m_CameraMode.drawMode;
            set
            {
                if (value == DrawCameraMode.UserDefined)
                    throw new ArgumentException("Use cameraMode to set user-defined modes");
                cameraMode = SceneRenderModeWindow.GetBuiltinCameraMode(value);
            }
        }

        [SerializeField]
        CameraMode m_CameraMode;

        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);
                }

View on GitHub (pinned to 225b0fbdb5)

Solutions

  1. Use sceneView.cameraMode = SceneView.AddCameraMode(name, section) or assign an existing CameraMode instead.
  2. Migrate all renderMode assignments to cameraMode assignments.
  3. Remove the Obsolete suppression pragma and fix compiler warnings to surface all deprecated usages.

Example fix

// before
sceneView.renderMode = DrawCameraMode.UserDefined;

// after
var mode = SceneView.GetBuiltinCameraMode(DrawCameraMode.ShadedWireframe);
sceneView.cameraMode = mode;
Defensive patterns

Strategy: validation

Validate before calling

// Do not assign UserDefined through renderMode.
// Migrate to:
sceneView.cameraMode = SceneView.GetBuiltinCameraMode(DrawCameraMode.Textured);

Prevention

When it happens

Trigger: Assigning sceneView.renderMode = DrawCameraMode.UserDefined directly in code. Code written against the old API that tries to set a custom draw mode through the deprecated property.

Common situations: Legacy editor scripts using the deprecated renderMode property. Upgrading Unity versions where renderMode became obsolete. Third-party tools that haven't migrated to cameraMode.

Related errors


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