natsue wroteSpineVer3.8とSpineVer4.0の出力を比較したところ、spineの生成後にupdateWorldTransformを呼ぶ処理が、Ver4.0ではコメントアウトされているのを発見しました。
それがバグということでしょうか?
いいえ、これはバグではありません。 コメントアウトされた行を削除しましたが、そもそもそこにあるべきではありませんでした。
これは、最初のフレームでの UpdateWorldTransform()
への重複した呼び出し( Update()
でも呼び出されます)を省くために、意図的に削除されました。
あなたの複製プロジェクトのスクリプト SpineTest.cs
では、Start()
からSkeletonGraphic
コンポーネントを使用してプレハブをインスタンス化しています。問題は、同じ Start()
メソッドで、最初の Update()
または LateUpdate()
の呼び出し(これはアニメーションフレームを作成し、 skeleton.UpdateWorldTransform()
を呼び出します)に到達する前に、 SlotでComputeWorldVertices()
を呼び出していることです。これを Start()
から手動で行う場合は、 Update(0)
を1回呼び出すことをお勧めします。 Update(0)
の代わりに skeleton.UpdateWorldTransform()
を直接呼び出すことは、 Update(0)
の一部のみを呼び出すことによる一種の最適化にはなりますが、将来APIが変更された場合は、追加のコード変更が必要になる可能性があります。※例えば4.1または4.2に移行する場合など。
このような必要な Update
呼び出しは最適ではないことは理解しています。今後、4.1-betaブランチのAPIを変更して、不要な重複呼び出しを防ぎながら、これらの要求される呼び出しの一部を自動的に発行できるかどうかを確認します。
natsue wroteWhen comparing the output of Spine Ver3.8 and Spine Ver4.0, I found that the process of calling updateWorldTransform after the generation of spine was commented out in Ver4.0.
Is that a bug?
No, this is not a bug. We have removed the commented-out line, it should not have been there in the first place.
This is saving an otherwise duplicate call to UpdateWorldTransform()
in the first frame (it is also called in Update()
), and was intentionally removed.
In the script SpineTest.cs
of your reproduction project you are instantiating a prefab with a SkeletonGraphic
component from Start()
. The problem is that in the same Start()
method your are calling ComputeWorldVertices()
on a Slot, before it gets to its first Update()
or LateUpdate()
call, which would apply the animation frame and call skeleton.UpdateWorldTransform()
. If you do this manually from Start()
, we would recommend to call Update(0)
once. Calling skeleton.UpdateWorldTransform()
directly instead of Update(0)
is a kind of optimization by calling only a part of Update(0)
, but this might require some additional code changes if the API changes in the future, e.g. when migrating to 4.1 or 4.2.
We understand that such required Update
calls are not optimal. We will have a look if we can change the API on the 4.1-beta branch to automatically issue some of these required calls, while still preventing unnecessary duplicate calls.