SpriteStudio / SS5PlayerForUnity

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

インポート時に IndexOutOfRangeException エラーが出る #30

Closed SpriteStudio closed 10 years ago

SpriteStudio commented 10 years ago

IndexAnimationStart に -1 が入った状態で、LibraryEditor_SpriteStudio.cs (2353) の ListInformationPlay[IndexAnimationStart] で範囲外アクセスエラーが発生する。

MasamiYitsuse commented 10 years ago

備忘までに。 IndexAnimationStartが-1になるということは、LibraryEditor_SpriteStudio.csの3598行目にあるIndexAnimationGetFrameNo関数が、該当フレームはssaeに含まれる単数もしくは複数のアニメーションで使用されている区域内のフレームには含まれていない(指定キー位置が各アニメーションの使用フレーム範囲外にあり、変換されているデータ中では大半の場合「アライメント(各アニメーションの先頭は10フレーム毎でアライメントされています)で設置されている、未使用フレームを指している」と判断して、「そのフレーム位置はアニメーションでは使用されていない」という意味で-1が返っています。 ……ツール上でアニメーション範囲外にアトリビュートのキーを打つことが可能でない場合、インポータ側でのアニメーション範囲の解釈か判定に問題があるかもしれません。

また、当該判定は、 「アトリビュートの継承や補間を、アニメーションをまたいだり・アニメーション区間をオーバーして行わない」 「アニメーションの途中でノードの初キーが登場する・アニメーションの途中でアニメーションのキーが終了するような場合の、前後のキー情報のパディング」 のために判定と使用がされています。

SpriteStudio commented 10 years ago

詳細な情報をありがとうございます。 こちらで問題となるデータを検証してみます。

SpriteStudio commented 10 years ago

備忘としての説明にある通り、最終フレーム+1フレームの位置にキーフレームがある事が原因で発生していました。 つまりデータが不正であり、この不正状態のデータが作れてしまうSS5本体側の不具合ということになります。 本体側の不具合修正および、既に作られてしまった不正なデータを修正する方法を調査します。 プレイヤー側でも不正データ箇所を通知するようにします。

SpriteStudio commented 10 years ago

当プレイヤーではエラーメッセージで該当箇所を示すように対処しました。 SS5 側で不正データを修正する方法を下記に示しました。 ↓ https://github.com/SpriteStudio/SS5PlayerForUnity/wiki/FAQ#%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E6%99%82%E3%81%AB-xxxx-keyframe-is-out-of-range-parts%E3%83%91%E3%83%BC%E3%83%84%E5%90%8D-frame%E6%99%82%E9%96%93-%E3%81%A8%E3%81%84%E3%81%86%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E5%87%BA%E3%82%8B