Skip to content

Upgrade engine to Unity 6 (6000.3.16f1)#1511

Open
rohitkulkarni97 wants to merge 18 commits into
RE-SS3D:developfrom
rohitkulkarni97:Chore/Engine-Upgrade-6000.3.16f1
Open

Upgrade engine to Unity 6 (6000.3.16f1)#1511
rohitkulkarni97 wants to merge 18 commits into
RE-SS3D:developfrom
rohitkulkarni97:Chore/Engine-Upgrade-6000.3.16f1

Conversation

@rohitkulkarni97

@rohitkulkarni97 rohitkulkarni97 commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Summary

Upgrades the project from Unity 2021.3.15f1 to Unity 6 (6000.3.16f1), along with every migration artifact the new editor requires: package upgrades, API compile fixes, asset/ProjectSettings reserialization, and a rewrite of the editor toolbar tools onto Unity 6's native main-toolbar API.

The diff is large by file count (~2.2k files) but the hand-written surface is small: most of it is Unity mechanically reserializing .meta, .asset and prefab YAML into the Unity 6 format. The authored changes are the toolbar-tool migration, three small Unity 6 compile fixes, the README, and a disposable in-editor migration notice.

Includes the full engine upgrade and its migration artifacts. Does not include any gameplay or feature changes.

PR checklist

  • The game builds properly without errors.
  • No unrelated changes are present.
  • No "trash" files are committed.
  • Relevant code is documented.
  • Update the related GitBook document, or create a new one if needed.

Pictures/Videos

Testing

  1. Open the project in Unity 6000.3.16f1 -- it imports and compiles with no console errors.
  2. The custom toolbar tools live on Unity 6's native main toolbar. Unity hides custom toolbar elements per-user by default, so if you do not see them, right-click the main toolbar and enable them under Tools.
    • Scene Switcher (left) loads any scene listed in the Scene class.
    • Launcher (right) toggles the launcher, mirroring Force Launcher in Application Settings.
    • Network Settings (right) edits the network type and server port.
  3. Make a standalone build -- it succeeds.
  4. Run a multiplayer host/client session and confirm existing flows still work: the host can host, a client can join and play, and state stays in sync.

Networking checklist

  • Works from host in host mode.
  • Works from server in server mode.
  • Works on server in client mode.
  • Works and is syncronized across different clients.
  • Is persistent.

Changes

Engine & packages

  • Unity 2021.3.15f1 -> 6000.3.16f1.
  • Input System -> 1.19.0; regenerated Controls.cs.
  • uGUI / TextMesh Pro -> 2.0; reimported TMP Essential Resources.
  • Addressables -> 2.9.1; added the group sort-order asset and Scriptable Build Pipeline settings.

Compile fixes (Unity 6 API)

  • Fixed the ContainerType compile error.
  • Migrated the renamed Animator API.
  • Resolved the TreeView ambiguity in Hierarchy 2.

Editor toolbar migration (main authored change)

  • Migrated Scene Switcher / Launcher / Network Settings from the UnityToolbarExtender plugin to Unity 6's native MainToolbar API, and removed the now-unused plugin.
  • Added a one-time, per-session in-editor notice pointing returning developers to the moved tools -- disposable migration scaffolding, documented in its own summary.
  • Documented the toolbar tools in the README.

Generated / reserialized data (mechanical -- the bulk of the diff)

  • Applied Unity 6 settings migrations (ProjectSettings, ShaderGraph).
  • Reserialized assets and ProjectSettings to the Unity 6 format.
  • Migrated embedded-package importer metadata.
  • Rebuilt the FishNet DefaultPrefabObjects registry (importer output, not a hand edit).
  • Cleared the legacy EditorSceneList / Resources entries from Built In Data.asset: by-design in Addressables 2.x (the PlayerDataGroupSchema was removed), affecting only what is exposed to the Addressables catalog. The project loads via Resources.Load* and the build-settings scene list with no runtime Addressables.Load*, so there is no functional impact.

Reviewing ~2.2k files: read the 18 commits in order -- they are atomic and self-describing. Concentrate human review on the toolbar-migration and compile-fix commits (the authored code); treat the reserialization commits as mechanical Unity output.

No known issues.

Related issues/PRs

Mechanical baseline from opening the project in Unity 6000.3.16f1:
- ProjectVersion.txt: 2021.3.15f1 -> 6000.3.16f1
- manifest/packages-lock: package upgrades + Unity 6 module additions
  (ai.navigation, multiplayer.center, accessibility, adaptiveperformance,
  vectorgraphics); textmeshpro folded into ugui 2.0.0
- ProjectSettings.asset: settings migrated by the upgrade
- MultiplayerManager.asset: new Multiplayer settings asset
- boot.config: removed (was empty)

Does not compile yet; engine-API compile fixes follow in later commits.
[SerializeField] was applied to the enum type, which the Unity 6 Roslyn
analyzers reject (SerializeField's AttributeUsage targets fields only).
The attribute was a no-op on an enum, so removing it is behavior-neutral.
Unity's API updater renamed Animator.keepAnimatorControllerStateOnDisable
to keepAnimatorStateOnDisable (same semantics) in Item.OnStart.
Unity 6 added UnityEngine.UIElements.TreeView, making the unqualified
TreeView (the IMGUI control the plugin uses) ambiguous. The offending
'using UnityEngine.UIElements;' was unused, so removing it resolves the
ambiguity without altering any plugin logic.
Auto-generated by InputActionCodeGenerator v1.19.0 from Controls.inputactions during the Input System 1.4.4 -> 1.19.0 upgrade; no manual edits.
ProjectSettings: scripting-define map gained new platform rows (VisionOS, Switch 2, QNX, etc.). ShaderGraphSettings: new shaderVariantLimit / customHeatmapValues fields. Auto-migrated on upgrade.
Reimport pruned 10 dangling entries (GUIDs resolving to no existing asset) and registered 5 existing clothing prefabs (ShoeHiTops, ShoeJackboots, Headset, HeadsetSecurity, GloveInsulated). 216 -> 211 entries; content-only, no GUID regeneration.
TextMeshPro merged into com.unity.ugui 2.0.0 in Unity 6; re-imported its Essential Resources. GUIDs unchanged (no broken references); TMP Settings migrated to assetVersion 2 (m_enableWordWrapping -> m_TextWrappingMode plus new default-valued fields) with default font/sprite/style-sheet references preserved. Adds URP/HDRP SDF shader graphs, SDFFunctions.hlsl, and a 2-pass mobile shader.
Bulk ForceReserializeAssets() pass (run headless in batch mode) migrating prefabs, scenes, materials, animations, localization and other Assets/ content to the Unity 6 serialization format. Mechanical; no behavioural changes.
Re-saved ProjectSettings/*.asset (Physics2D, etc.) to the Unity 6 serialization format.
PluginImporter metas under Packages/com.coimbrastudios.internal bumped to serializedVersion 3 by the reserialize pass.
AddressableAssetGroupSortSettings.asset persists the editor display order of Addressable groups; auto-generated by the Unity 6 Addressables version. No runtime or build effect.
Generated by the Scriptable Build Pipeline on the first Unity 6 build (cache-server off, V2 hasher, archive threading). Defaults committed per Unity's convention of versioning ProjectSettings/.
Replace the UnityToolbarExtender-based IMGUI toolbar buttons with native
[MainToolbarElement] tools for Unity 6 (6000.3):

- SceneSwitcherTool (left): dropdown to load any scene in Scene.Names.
- LauncherTool (right): button toggling ApplicationSettings.ForceLauncher.
- NetworkSettingsTool (right): dropdown for NetworkType and ServerPort.

The native toolbar caches element content, so each tool polls
EditorApplication.update and calls MainToolbar.Refresh when its underlying
settings change, restoring the live updates the old per-frame IMGUI toolbars
provided.
The editor toolbar tools were migrated to Unity 6's native MainToolbar API,
so the UnityToolbarExtender plugin is no longer referenced. Delete the plugin
and drop its now-dead assembly reference from SS3D.Utils, SS3D.SceneManagement,
SS3D.Editor, SS3D.Core, and SS3D.Application.
After migrating the toolbar tools to Unity 6's native MainToolbar API, returning developers can miss that the Scene Switcher, Launcher and Network Settings moved off the old plugin's toolbar. Show a one-time-per-session dialog pointing them to the native main toolbar.

Gated by SessionState (once per editor launch) and EditorPrefs (permanent opt-out via the Don't show again button), and skipped in batch mode. This is disposable migration scaffolding, to be removed once the upgrade has propagated.
Add an Editor Tools section listing the Scene Switcher, Launcher and Network Settings toolbar tools and how to enable them on Unity's native main toolbar.
Addressables 2.x (the project is on 2.9.1) removed support for the Built In Data group, so its EditorSceneList and Resources entries are no longer serialised. The project loads Resources via Resources.LoadAll (TileResourceLoader) and scenes via SceneManager.LoadScene (Scene), and has no runtime Addressables loading, so dropping these entries has no functional impact.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant