This page lists changes in Unity 6.3 (6000.3) that can affect existing projects when you upgrade them from Unity 6.2 (6000.2) to Unity 6.3 (6000.3).
Review changes for Unity 6.3 in these areas:
This section outlines recent updates to accessibility APIs that can affect your upgrade experience.
AccessibilityRole has converted from a flags enum to a standard enum. This conversion creates consistent and predictable API behavior across the platforms supported by the screen reader API: Android, iOS, Windows, and macOS. Existing code that combines roles or performs bitwise operations on values in this enum can result in compiler warnings, and cause incorrect screen reader announcements or behaviors.
To resolve these warnings and ensure intended screen reader behavior in your upgraded project, make sure to set only one AccessibilityRole for AccessibilityNode.role and remove any bitwise operations on values in this enum.
The underlying type of the AccessibilityRole and AccessibilityState enumerations has changed from int to byte to reduce the memory footprint of AccessibilityNode objects. Any code that depends on the size of these enums or the size of types with fields of these enums (for example, serialization systems), or any precompiled code built against the old int-based enum definitions will throw exceptions or result in unexpected behaviors.
To resolve these issues in your upgraded Unity project, recompile any code built against the old int-based enum definitions, and make sure that any code that depends on the size of these enums handles their new size correctly.
AccessibilityNode.selected was renamed to AccessibilityNode.invoked. AccessibilityNode.selected is now deprecated. If you don’t automatically update deprecated APIs when you upgrade your project, it can still compile. However, AccessibilityNode.selected will be obsolete in a future release.
This section outlines recent updates to the Unity Editor and its general workflows that can affect your upgrade experience.
The Search Index Manager (Windows > Search > Index Manager) is now removed. If you want to customize Search indexing, go to Preferences > Search > Indexing instead.
In the Indexing preferences window, there are now two options for indexing:
AssetWorker processes as soon as the Editor launches. When disabled, indexing only occurs the first time any Search API or tool is used. This option is disabled by default.This section outlines recent updates to Entities that can affect your upgrade experience.
The type of the following fields has changed from int to EntityId:
UnityEngine.Experimental.GlobalIllumination.Cookie.instanceIDUnityEngine.Experimental.GlobalIllumination.DirectionalLight.instanceIDUnityEngine.Experimental.GlobalIllumination.DiscLight.instanceIDUnityEngine.Experimental.GlobalIllumination.LightDataGI.cookieIDUnityEngine.Experimental.GlobalIllumination.LightDataGI.instanceIDUnityEngine.Experimental.GlobalIllumination.PointLight.instanceIDUnityEngine.Experimental.GlobalIllumination.RectangleLight.instanceIDUnityEngine.Experimental.GlobalIllumination.SpotLightBoxShape.instanceIDUnityEngine.Experimental.GlobalIllumination.SpotLightPyramidShape.instanceIDExcept for cookieID, the fields have also been renamed to entityID. The original instanceID is kept as a forwarding property for backward compatibility.
The EntityId type is implicitly convertible to and from int, so C# scriptsA piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
See in Glossary will continue to work without modification.
However, if you have a precompiled assembly (a .dll) in your project that is using any of these fields, you might encounter MissingFieldException errors from that assembly. To resolve these errors, recompile the assembly against the latest UnityEngine.dll. Source code changes aren’t required. If the assembly is from a third party and you don’t have access to its source code, contact the vendor for an updated build that targets the latest Unity version.
The type of UnityEngine.SceneManagement.Scene.handle has changed from int to SceneHandle.
If you’re using Scene.handle in your code, the SceneHandle type is implicitly convertible to and from int, so C# scripts will continue to work without modification.
However, if you have a precompiled assembly (a .dll) in your project that is using any of these fields, you might encounter MissingFieldException errors from that assembly. To resolve these errors, recompile the assembly against the latest UnityEngine.dll. Source code changes aren’t required. If the assembly is from a third party and you don’t have access to its source code, contact the vendor for an updated build that targets the latest Unity version.
This section outlines recent updates to Unity’s graphics systems that can affect your upgrade experience.
Universal Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary Compatibility Mode was deprecated in Unity 6.0 and is now removed. The code is stripped by default to improve compilation time and reduce the build size.
The RenderGraphSettings.enableRenderCompatibilityMode property is now read-only (returning false). If you’re still using Compatibility Mode, first convert your project to URP Render Graph and use Unity 6.0, 6.1, or 6.2. Shipping a project with Compatibility Mode is not recommended and not supported.
You can use the URP_COMPATIBILITY_MODE scripting define symbol in Player settingsSettings that let you set various player-specific options for the final game built by Unity. More info
See in Glossary to add Compatibility Mode back to the code. Use this only to convert the project. This scripting define will no longer work in Unity 6.4.
The Legacy ETC compressionA method of storing data that reduces the amount of storage space it requires. See Texture Compression, Animation Compression, Audio Compression, Build Compression.
See in Glossary mode is now removed. Projects that use Legacy ETC compression will be automatically updated to use the default ETC compressor configuration.
The compressors used by this configuration generally have a higher quality encoding. This means that compressed textures might not be pixel-identical to their previous versions due to differences in coding artifacts. However, these changes don’t impact their size on disk or memory usage.
If you want the closest match to the Legacy ETC compression behavior, go to Project Settings > Editor. In Texture Compressors, set ETC Compressor to Custom and do the following:
The experimental AdditionalBakedProbes API is now removed and the experimental CustomBake API is obsolete. If you need to compute data for custom light probeLight probes store information about how light passes through space in your scene. A collection of light probes arranged within a given space can improve lighting on moving objects and static LOD scenery within that space. More info
See in Glossary positions, use the LightTransport.IProbeIntegrator API instead.
Note: The experimental sky occlusion system in CustomBake applied only to probes and didn’t affect lightmapsA pre-rendered texture that contains the effects of light sources on static objects in the scene. Lightmaps are overlaid on top of scene geometry to create the effect of lighting. More info
See in Glossary.
This section outlines recent updates to multiplayer packages and services that can affect your upgrade experience.
Netcode for GameObjectsThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
See in Glossary 1.X is now deprecated and replaced by the 2.X version. When you update your project, consider the following:
NetworkTransform.Update can no longer be overridden for performance reasons. NetworkTransform.Update is now replaced by a new NetworkTransform.OnUpdate method, which is only invoked on non-authority instances.NetworkTransform.Update to gain more control over non-authority NetworkTransform instances (for example, to customize the way NetworkTransform instance positions interpolate between updates), you must override NetworkTransform.OnUpdate instead.NetworkTransform.Update to add logic for authority instances, it’s recommended to make a new class (such as a NetworkBehaviour) implementing INetworkUpdateSystem and then register or unregister it with the NetworkUpdateLoop when gaining and losing authority.Multiplay Hosting is no longer supported in the Unity Editor and runtime. The service will continue to run through March 31, 2026, after which it will shut down.
The default version of the Multiplayer Play Mode package is now 2.0.1. This version removes the remote instances previously used as part of Play Mode scenarios.
If you have Play Mode scenarios containing remote instances, you will encounter errors. To resolve these, do one of the following:
The default version of the Multiplayer Services package is now 2.0.0. This version removes all the functionalities related to Multiplay Hosting.
If you need to continue using Multiplay Hosting in your project until the shutdown date of March 31, 2026, do the following:
If you’re no longer using Multiplay Hosting in your project, note the following:
UNITY_SERVER or ENABLE_UCS_SERVER in scripting defines or through the Dedicated Server platform and attempt to call Multiplay Hosting-related functions, your project will not compile. To resolve this, remove all Multiplay Hosting-related references from your project.Multiplayer Service Matchmake async function with a Multiplay Queue, this will result in a Not supported error. To resolve this, use a non-Multiplay queue configuration.This section outlines recent updates to optimization in Unity that can affect your upgrade experience.
The core functionality of Adaptive Performance is now a module in the Unity Editor rather than a package. Refer to What’s New in Unity 6.3 for more information about the changes.
The upgrade action required depends on your project’s configuration:
EditorRuntime (except the Visual Scripting folder)TestsProviderSettingsEditor APIs for your build profileA set of customizable configuration settings to use when creating a build for your target platform. More infotargetSelectionGrouping.
EditorGUILayout.BeginBuildTargetSelectionGrouping() in combination with DisplayBaseSettingsEnd(), you now need to specify EditorGUILayout.EndBuildTargetSelectionGrouping separately because it’s no longer bundled with DisplayBaseSettingsEnd().This section outlines recent updates to platform-specific tools and settings.
This section outlines recent updates to Android-specific tools and settings.
Deprecated support for the round and legacy icons. The recommended best practice is to use the adaptive icons. For more information, refer to Icon in Android Player settings.
Starting with Android 16, the Android operating system no longer enforces fixed orientation, resizability, and aspect ratioThe relationship of an image’s proportional dimensions, such as its width and height.
See in Glossary settings for applications running on large screen devices. This can change the way your app behaves on tablets, foldables, and other large displays.
Unity now provides a new App Category Player setting to help you keep the previous behavior for game applications. To make sure your project is exempt from these Android 16 changes and retains its configured orientation, resizability, and aspect ratio, set App Category to Game. The App Category Player setting replaces the obsolete PlayerSettings.Android.androidIsGame API.
For more information, refer to Android 16 behavior changes for large screen devices.
This section outlines recent updates to Unity Web that can affect your upgrade experience.
The Facebook Instant Games platform has been deprecated and will be removed in a future release. The platform is no longer recommended for production. For more information, refer to Deprecation Notice: Unity Support for Facebook Instant Games.
To create Instant Games, use the Web platform instead.
This section outlines recent updates to programming in Unity that can affect your upgrade experience.
The [SerializeField] attribute has been updated so that you can only apply it to fields. Applying it to properties, methods, types, or other code elements will now result in a compile-time error. This change helps ensure you use the attribute correctly, as it has no effect on non-field members.
Projects already using the attribute correctly will not be affected. Only projects which have misapplied the attribute will have compiler errors.
If you encounter a compile error, you can usually resolve it by removing the attribute from the affected member. If you encounter a compile error because you applied the attribute to an auto-implemented property when you intended to apply [SerializeField] to the backing field of an auto-implemented property, use the [field: SerializeField] syntax to apply it correctly.
For more information, refer to SerializeField and Serialization rules.
This section outlines recent updates to Unity’s UI Toolkit that can affect your upgrade experience.
The UI Toolkit USS parser has been upgraded to improve error detection and validation. While these improvements increase accuracy, they might introduce minor breaking changes by flagging invalid USS that was previously overlooked or incorrectly processed. These behaviors aren’t new, but the upgraded parser is now better at identifying these issues.
You might encounter the following changes in behavior:
The upgraded parser is now better at detecting invalid or missing selectors that were previously ignored or incorrectly transformed. For example, single dots (.) in selectors were mistakenly converted into wildcards (*).
Syntax validation is now significantly improved. Errors such as missing or extra brackets, excessive semicolons, or other malformed USS syntax are now detected and reported.
Unsupported CSS features are now better detected, such as pseudo-element selectors or advanced CSS functionality not supported by UI Toolkit. Additionally, you can now configure error handling for unsupported CSS features through the Unsupported Selector Action field in the importer InspectorA Unity window that displays information about the currently selected GameObject, asset or project settings, allowing you to inspect and edit the values. More info
See in Glossary. You can adjust the behavior from the default error to a warning or choose to ignore the issue entirely.
If your USS file contains syntax errors, it will block the file from importing. To inspect the errors and warnings, you can review the file in the Inspector or go to the Console windowA Unity Editor window that shows errors, warnings and other messages generated by Unity, or your own scripts. More info
See in Glossary. After you have resolved the errors, the file will import as normal.
This section outlines recent updates to XR that can affect your upgrade experience.
Support for the Unity Magic Leap XR Plugin is now deprecated, and support for the Magic Leap (x86_64) build target for new projects is now removed. In Unity 6.3 and later, support for Magic Leap is limited to existing projects. For more information about Magic Leap deprecation, refer to Magic Leap support.