SpriteStudio / SS5PlayerForUnity

OPTPiX SpriteStudio 5 Player for Unity
http://www.webtech.co.jp/spritestudio/
MIT License
39 stars 15 forks source link

v1.3.2 総フレーム数1のソースアニメを含んだインスタンスアニメーションに AnimationPlay 関数を実行すると、アニメ終了時にインスタンスが消えてしまう #164

Open gigacee opened 8 years ago

gigacee commented 8 years ago

総フレーム数が 1 のソースアニメを含んだインスタンスアニメーションに対して、

spriteRoot.AnimationPlay(0, 1);

というように、有限回数でアニメーション再生を実行した時、アニメーション終了時に、以下のエラーメッセージとともに、インスタンスが消えてしまいます。

IndexOutOfRangeException: Array index is out of range.
Library_SpriteStudio+Control+Parts.UpdateGameObject (.Script_SpriteStudio_Root InstanceRoot, Int32 FrameNo) (at Assets/SpriteStudio/ScriptLibrary/Library_SpriteStudio.cs:2620)
Script_SpriteStudio_Root.LateUpdate () (at Assets/SpriteStudio/Script/Script_SpriteStudio_Root.cs:275)

例によって、確認用プロジェクトを作成したので、参考にしていただければと思います。 https://github.com/Gigacee/SS5PfU130_instance/tree/master

なお、 AnimationStop() で能動的に終了させた場合は、正常に動作いたしました。

以上、ご確認いただければ幸いです。 よろしくお願いいたします。

MasamiYitsuse commented 8 years ago

Gigacee様

お世話になっております。 レポート有難う御座います。 上記障害を修正したものをGitHubのdevelopブランチにVer.1.3.3としてアップいたしました。

原因としては、インスタンスアニメーションオブジェクトの再生開始位置を(呼出元のタイムラインと)強制同期する際に、フレーム範囲外を指定してしまう(オーバーラン)する場合があり、そのためにインスンタンス側のアニメーションオブジェクトのアニメーション更新で(あり得ないフレーム位置のデータを取得しようとして)データ配列の範囲外参照をしておりました。

お忙しい中大変申し訳御座いませんが、何卒宜しくお願い致します。

gigacee commented 8 years ago

v1.3.3 にアップデートしたところ、正常にインスタンスアニメーションの再生ができることを確認いたしました。 ご対応ありがとうございました。