chore: upgrade to Unity 6000.5.4f1#9478
Conversation
Bump the editor and migrate the DCL code that hit APIs removed in 6000.5: - EntityId replaces the obsolete int instance-id APIs. Physics.BakeMesh now takes an EntityId (Utils, BakeColliderMeshes, CollideTerrainSystem), and the collider-bake job array is typed NativeArray<EntityId>. - MetricsRegistry guards its type scan: IsAssignableFrom can force-load a precompiled dependency type that 6000.5's Mono fails to resolve, which would otherwise throw from the static ctor and take request metrics down. Verified compiling and running on 6000.5.2f1 (editor boots, enters play mode, reaches interactive). Vendored/third-party packages (SoftMask, GPUI Pro, AVPro, UniTask, com.unity.localization, FileBrowserPro, renderfeatures) also need 6000.5 API fixes; those live outside this repo and are tracked separately.
6000.5.3 escalated the InstanceID deprecations to hard errors and moved UnityEngine.XR types behind the XR module, which broke every third-party package. Changes on top of the 6000.5.2f1 migration: - ProjectVersion 6000.5.4f1; add com.unity.modules.xr (XR types are no longer reachable without it). - Point vendored packages (AVPro, GPUI Pro, RenderFeatures, FileBrowserPro) at unity-explorer-packages#fix/unity-6000.5.4-api-compat, which migrates them to the EntityId APIs. - Vendor AltTester 2.3.2, SerializeReferenceExtensions and AnimationSequencer on the same branch: no upstream Unity 6000.5 support exists yet. AltTester is now referenced by assembly name instead of the version-specific asmdef GUIDs. - SoftMask 3.5.0 -> 3.6.2 and UniTask lock bump; both fixed 6000.5 compatibility upstream. - Migrate remaining DCL GetInstanceID call sites: Physics.BakeMesh takes EntityId; object identity checks use reference equality. - Editor-migrated settings (PackageManager registry format, SoftMask shader registry, URP global settings, mppm version stamp).
Runtime fixes found by in-editor verification: - unity-shared-dependencies pinned to fix/unity-6000.5-shader-compat: URP 17.5's LitForwardPass.hlsl now self-includes LitInput.hlsl, which collided with DCL_Toon's own input file and broke the avatar toon shader (magenta avatars). Fixed upstream with guard-reuse. - Migrate the two UI Toolkit Inter font assets from static to dynamic atlas population (source .ttf restored): 6000.5's Advanced Text Generator cannot use static font assets, which blanked all UI Toolkit text. Baked atlases retained as the pre-populated starting set. - Point DebugUtilitiesStyle.uss at the real Inter Regular font asset; its previous reference targeted a theme asset that no longer exists. Audit cleanup (multi-agent review of the upgrade diff): - unity-explorer-packages branch rebuilt to vendor the previously pinned AltTester 2.3.0 / SerializeReferenceExtensions 1.3.1 / AnimationSequencer 0.5.4 (no silent version bumps) and to keep AltTester's int-based wire protocol on legacy instance-id values. - Revert the test-only localization table that the Localization 1.5.12 sync auto-added to the shipped addressables group. - Commit the deterministic 6000.5 migration artifacts (VFXManager version stamp, PhysicsCoreProjectSettings2D, ForwardRenderer hide flags, stopwatch meta normalization) so checkouts stay clean.
The Asian fallback fonts (NotoSans SC/JP/KR) load asynchronously via
addressables in ChatPlugin. Any text generated before that load lands —
e.g. chat channel names with CJK characters during boot — resolved the
missing glyphs to spaces ('character \u6587 was not found in the
Inter-Regular SDF font asset or any potential fallbacks') and never
regenerated. Force active TMP texts to rebuild their meshes against the
completed fallback chain, so text created during the loading window
self-heals instead of staying blank.
The CJK fallback fonts were loaded fire-and-forget while the rest of chat setup raced ahead, so channel names and history rendered before the load landed resolved missing glyphs to spaces and logged 'character \u6587 was not found in the Inter-Regular SDF font asset or any potential fallbacks'. Await the load inside ChatPlugin.InitializeAsync so the fallback chain is complete before any chat text generates its mesh; the failure path is unchanged (fonts stay optional, chat init cannot be blocked by a load error). The live-text refresh remains as a safety net for non-chat text rendered during boot.
ContextualImage on the Controls GameObject loads the same sprite (guid 4974685691c1) through its AssetReference on enable; the Image component also serialized it directly, hard-linking it into memory and tripping the '[UI] Image must not have a sprite' error on every ControlsPanelView preallocation. Clear the serialized sprite so only the contextual load provides it.
The auto-translate indicator (文A / あA) and the language dropdown's 中文 are CJK glyphs serialized directly in UI prefabs and settings, so they render at boot — before the addressable CJK fallback fonts can load — and TMP replaced them with spaces while logging 'character 文 was not found' warnings. Add UIDesignGlyphs SDF: a 256x256 static font asset holding exactly those three glyphs (baked from NotoSansSC-SemiBold, source-font reference stripped so the 8.5MB OTF is not a build dependency), wired into Inter-Regular SDF's fallback table. Boot-time text now resolves the glyphs immediately; the runtime-loaded NotoSans fallbacks continue to cover arbitrary user content. Also re-pins unity-explorer-packages to 1293099, which drops seven Ocean material resaves (editor serialization churn) from the branch. Verified: full boot to the authentication screen logs zero missing-glyph warnings (previously eight).
Removes the 'The referenced script (Unknown) on this Behaviour is missing!' warning logged on every boot. The six dead components were corpses of deleted scripts, confirmed via git history: - DestinationMarker.prefab: pre-repo script, no surviving reference - FavoriteMarkerObject.prefab: navmap-era script dropped in the map discoverability refactor (#2734) - VoiceChatMicrophoneAudioSource.prefab: leftover from a local getFps prototype (hand-crafted guid a1b2c3d4...) - VoiceChatPlaybackAudioSource.prefab (x2): scripts removed in the communities voice chat audio-quality fix (#5402) - RoomIndicator.prefab: reference from the reverted UI Toolkit nametag refactor (#5657) Stripped with GameObjectUtility.RemoveMonoBehavioursWithMissingScript; a project-wide scan of every m_Script guid in Main.unity and all prefabs now resolves cleanly.
…ixes unity-explorer-packages 6bc4241: version-guard the AdvancedDropdownItem childList accessor (6000.5-only API) so the vendored packages compile on the 6000.4 line. unity-shared-dependencies a1a8ecc: inline the parameterless IsSurfaceTypeTransparent() under URP's own include guard instead of including Shaders/Utils/SurfaceType.hlsl, which 6000.4's URP does not ship. Verified: current dev (6000.4.0f1) with both fix branches compiles with zero errors, so the dependency branches can merge ahead of this PR.
…block The property is float4 everywhere (cbuffer, sampled cache, access macro) but the UNITY_DOTS_INSTANCED_PROP declaration said float. Unity 6000.4's untyped metadata symbols tolerated the mismatch; 6000.5 encodes the type into the generated metadata name, so the player-variant compile fails with 'undeclared identifier unity_DOTSInstancingF16_Metadata_TerrainBounds' (surfaces only in player builds — editor variants never hit it).
io.sentry.unity 4.0.0's repackaged System.Memory/System.Text.Json shims
crash Unity 6000.5's IL2CPP Span-intrinsic remapper ('Sequence contains
no matching element' in IntrinsicRemap.SpanGetItemArguments), failing
every player build with 9 conversion errors. 4.7.0 converts cleanly.
unity-shared-dependencies pinned to de4cce8: DOTS-instancing variant
fixes (legacy FROM_MACRO accessors, direct unity_ObjectToWorld uses,
missing instance-id transfer in the toon outline) that only surface in
player builds.
Verified: full macOS IL2CPP player build succeeds with zero script,
shader and IL2CPP errors; both dependency branches also compile clean
on 6000.4.0f1 dev for sequential landing.
Squashed the shader-compat branch to a single comment-free commit (5261933); no functional change from de4cce8.
|
Slack notification sent to #explorer-ext-contributions for external review. |
|
Test results not found — the test run likely crashed or timed out before producing results; check the |
|
Claude finished @eordano's task in 2m 49s —— View job Security-focused dependency review
Scope: this PR changes only dependency + project-settings files (no Summary table
FindingsProvenance is strong across the board. Every changed git source is either a Decentraland-org-owned repo ( MEDIUM — the only real concern: mutable git branch refs replace immutable pins. Ten packages now resolve via
AltTester capability note (informational, pre-existing). LOW — version bumps from trusted sources. Sentry UNKNOWN / manual follow-up.
RecommendationNo HIGH-risk / blocking issue: sources are org-owned or official, and the lockfile pins concrete commits. The one item needing human tracking is the temporary mutable branch refs in DEPENDENCY_REVIEW: NEEDS_ATTENTION |
Upgrades the Explorer to Unity 6000.5.4f1 (from 6000.4.0f1). Replaces #9392 (same content, re-pushed in-repo with signed commits).
API migration (compile-blocking on 6000.5)
EntityIdreplaces the obsolete int instance-id APIs.Physics.BakeMeshnow takes anEntityId(GLTF container colliders, road generator, terrain collider bake), and the collider-bake job array is typedNativeArray<EntityId>. Object identity comparisons use==instead ofGetInstanceID().com.unity.modules.xradded (XR types moved behind the XR module; the removedvrmodule no longer supplies it).unity-explorer-packages#fix/unity-6000.5.4-api-compat(AltTester 2.3.2, AnimationSequencer, SerializeReferenceExtensions) alongside the already-vendored AVPro / GPUI Pro / FileBrowserPro / RenderFeatures pins.unity-shared-dependencies#fix/unity-6000.5-shader-compatresolves the URP 17.5LitInput.hlslself-include collision with DCL_Toon. SoftMask → 3.6.2 and Sentry → 4.7.0 (4.0.0 crashes 6000.5's IL2CPP Span-intrinsic remapper); URP/VFX → 17.5.0 plus editor-recommended package bumps.Runtime fixes for 6000.5 behavior changes
UIDesignGlyphs SDFfont bakes the three design glyphs (文 あ 中) used at boot before addressable fallbacks load — boot now logs zero missing-glyph warnings.MetricsRegistryguards its type scan (IsAssignableFromcan throwTypeLoadExceptionunder 6000.5's Mono, which would kill request metrics from the static ctor)._TerrainBoundsdeclaredfloat4in MountainLit's DOTS-instancing block (6000.5 encodes the type into metadata symbols; player-build variants failed).Cleanups surfaced by the upgrade
ControlsPanelno longer hard-links the sprite itsContextualImageloads via AssetReference (fixed the "[UI] Image must not have a sprite" error on preallocation).PhysicsCoreProjectSettings2D, package-manager settings migration) so checkouts stay clean.Verification
unity-explorer-packages#60,unity-shared-dependencies#95) compile clean on current 6000.4 dev, so they can merge ahead of this PR; after they merge to main, drop the#fix/...refs from the manifest.