Unity-Technologies / Unity-Technologies/com.unity.netcode.gameobjects
NetworkTransform misses sync when GameObject is re-enabled; add option for automatic reassertion
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.3k
- Forks
- 461
- Avg merge
- 3d 16h
- Merged PRs (30d)
- 20
Description
Description
When using NetworkTransform in server-authoritative mode, if a NetworkObject is deactivated on clients (e.g. via SetActive(false) or scene streaming), any transform changes (e.g. via Teleport) made while it's inactive are not propagated to the client once it's re-enabled. This results in position mismatches, where the client sees the object at its old position while the server has already moved it.
There is no warning, and the desync is silent unless manually corrected.
Reproduction Steps
Spawn a server-authoritative NetworkObject with a NetworkTransform
Deactivate the object on all clients (via RPC or reparenting in a disabled object)
On the server, call Teleport(...) to move the object
Reactivate the object after a short delay
Observe: the client does not reflect the new position
Expected Behavior
Clients should receive the latest authoritative position of the object when it becomes active again.
Workarounds
Currently, we must:
Reapply Teleport() after reactivating the object, or
Use a coroutine to delay the teleport until the object is re-enabled, or
Use custom NetworkVariable logic or whatever boiler plate works instead of NetworkTransform
Suggested Fixes
Add a forceResyncOnEnable bool on NetworkTransform
Internally store the last known transform state, and resend it on reactivation
Or provide an OnNetworkObjectReenabled callback for developers to manually reassert state
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start from NetworkTransform's server-authoritative handling of Teleport while the NetworkObject is inactive, then reproduce the described disable, move, and re-enable sequence. Determine how the latest authoritative transform can be reasserted on reactivation and verify that the client receives the updated position without requiring a second Teleport call.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, unity
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100