mimyquality / FukuroUdon

MimyLab's U# utilitiy pack for VPM.
MIT License
28 stars 4 forks source link

_syncLocalが初期化されてしまった場合に正しく復帰するように修正 #2

Closed TORISOUP closed 1 year ago

TORISOUP commented 1 year ago

【現象】

【原因】

こちらのツイートでも言及されているとおり、Owner委譲時にUdonSyncedの値が初期値(Vector3.Zero)に戻ることがあるみたいです。実際にManualObjectSyncを使ってこの現象が発生するか試しましたが、localScaleがゼロになってしまう現象が起きました。

image image

1行目がOwner情報、2行目がPosition、3行目がlocalScaleの値です。所有権が他人に移ったタイミングで、一瞬だけUdonSyncedValueが初期化された状態でOnDeserializeが発火するみたいです。

【対策】

実際のlocalScaleの値と_syncScale の値がズレていたとしてもOwner側でそれを補正する処理がなかったので、OnPreSerialization()を定義してそこで値を補正するようにしました。

mimyquality commented 1 year ago

0.2.8バージョンで初期化と同期の関係を見直し、こちらの問題も同時に解消されたと思います。 そのためこちらのPRはクローズさせていただきます。