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
- Use sceneView.cameraMode = SceneView.AddCameraMode(name, section) or assign an existing CameraMode instead.
- Migrate all renderMode assignments to cameraMode assignments.
- 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
- Migrate all renderMode usages to cameraMode to avoid the deprecated property entirely.
- Never pass DrawCameraMode.UserDefined to the renderMode setter.
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
- The provided camera mode {0} is not registered!
- 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/f7652429cd411f46.
Report an issue: GitHub.