On Later-Joiner's client,
OnVariableChanged
can be fired without
OnDeserialization()
before
OnEnable()
and
Start()
. It will be happened especially if the object owner uses
RequestSerialization()
frequently (such as per second interval synchronization).
It can be critical problem because it makes
OnEnable()
and
Start()
are not guaranteed before synced variable changes: firing
OnVariableChanged
before
Start()
can breaks Udons that implementing initialization at
Start()
.
Build: 1539
----
I've made the new testing world to check event orders: https://vrchat.com/home/world/wrld_c357c8f1-1d22-4e91-bfdc-e72c04097fe1/info .
(Sample screenshot is attached below)
Reproduction steps:
  • Make the instance of the world (Player A), join the instance then enable interval sync from "Toggle Sync Interval" buton. (It starts 0.25s interval of synced int increment using manual sync)
  • Join another player to its instance (Player B).
  • See the console UI in the world at Player B.
Expected Results:
  • At Player B console UI, "SyncInt change" console message should only be occured before "OnEnable".
Actual Results:
  • At Player B console UI, there is small chance to occur "SyncInt change" console message before "OnEnable".
- It may sometimes not be occurred, so try re-joining several times.