🎉 Netcode for GameObjects v2.5.0 📦 is now publicly available 👉 (CHANGELOG)
Added
- Added AsNativeArray() read‑only accessor to NetworkList (#3567)
- Added serializer for Pose (#3546)
- Added AttachableBehaviour helper component to provide an alternate approach to parenting items without using the NetworkObject parenting. (#3518)
- Added AttachableNode helper component that is used by AttachableBehaviour as the target node for parenting. (#3518)
- Added ComponentController helper component that can be used to synchronize the enabling and disabling of components and can be used in conjunction with AttachableBehaviour. (#3518)
- Added NetworkBehaviour.OnNetworkPreDespawn that is invoked before running through the despawn sequence for the NetworkObject and all NetworkBehaviour children of the NetworkObject being despawned. (#3518)
- Added methods GetDefaultNetworkSettings and GetDefaultPipelineConfigurations to UnityTransport. These can be used to retrieve the default settings and pipeline stages that are used by UnityTransport. This is useful when providing a custom driver constructor through UnityTransport.s_DriverConstructor, since it allows reusing or tuning the existing configuration instead of trying to recreate it. This means a transport with a custom driver can now easily benefit from most of the features of UnityTransport, like integration with the Network Simulator and Network Profiler from the multiplayer tools package. (#3501)
- Added mappings between ClientId and TransportId. (#3516)
- Added NetworkPrefabInstanceHandlerWithData, a variant of INetworkPrefabInstanceHandler that provides access to custom instantiation data directly within the Instantiate() method. (#3497)
Fixed
- Removed allocation to the heap in NetworkBehaviourUpdate. (#3573)
- Fixed issue where NetworkConfig.ConnectionData could cause the ConnectionRequestMessage to exceed the transport's MTU size and would result in a buffer overflow error. (#3564)
- Fixed regression issue in v2.x where NetworkObject.GetNetworkBehaviourAtOrderIndex was converted from public to internal. (#3541)
- Fixed ensuring OnValueChanged callback is still triggered on the authority when a collection changes and then reverts to the previous value in the same frame. (#3539)
- Fixed synchronizing the destroyGameObject parameter to clients for InScenePlaced network objects. (#3514)
- Fixed distributed authority related issue where enabling the NetworkObject.DestroyWithScene would cause errors when a destroying non-authority instances due to loading (single mode) or unloading scene events. (#3500)
- Fixed an issue where UnityTransport would not accept single words as valid hostnames (notably "localhost"). (#3591)
- Fixed issue where viewing a NetworkBehaviour with one or more NetworkVariable fields could throw an exception if running a distributed authority network topology with a local (DAHost) host and viewed on the host when the host is not the authority of the associated NetworkObject. (#3578)
- Fixed issue when using a distributed authority network topology and viewing a NetworkBehaviour with one or more NetworkVariable fields in the inspector view would not show editable fields. (#3578)
- Fixed issue with unnecessary internal GC Allocations when using the IReadOnlyList NetworkManager.ConnectedClientsIds within a foreach statement by either replacing with a for loop or directly referencing the NetworkConnectionManager.ConnectedClientIds. (#3527)
Changed
- Marked UnityTransport.ConnectionAddressData.ServerEndPoint as obsolete. It can't work when using hostnames as the server address, and its functionality can easily be replicated using NetworkEndpoint.Parse. (#3591)
- Optimized NetworkList indexer setter to skip operations when the new value equals the existing value, improving performance by avoiding unnecessary list events and network synchronization. (#3587)