うみつき様
お世話になっております。SS6Player for Unity開発担当です。
現状、アニメーションの全体フレーム数か時間を取得する方法は、関数としては設置されていません。申し訳ありません。
※こちら(機能関数としての実装)は、次以降のバージョンアップ時の参考とさせていただきます。ありがとうございます。(現状直近で予定されているバージョンアップが「Ver.2.1. Beta」となっています)
現状でアニメーションの時間を取得する方法としては……
// これは取得対象とするSS6PUのアニメーションオブジェクトとします
Script_SpriteStudio6_Root scriptRoot;
//これは取得対象とするアニメーションを再生しているトラック番号です。通常は0だとは思います。
int indexTrack = 0;
// 現在再生中のアニメーションのインデックスを取得
int indexAnimation = scriptRoot.TableControlTrack[i].ArgumentContainer.IndexAnimation;
// 現在設定されているアニメーションデータから長さとFPSのデータを取得
int countFrame = scriptRoot.DataAnimation.TableAnimation[indexAnimation].CountFrame;
int framePerSecond = scriptRoot.DataAnimation.TableAnimation[indexAnimation].FramePerSecond;
// 再生区間長を求める
float timeAnimation = (float)countFrame / (float)framePerSecond;
※この掲示板(?)がコードを書くようにはできていないので、見づらい旨、申し訳ありません。テキストエディタなどに上記の区画をコピー&ペーストして見てやっていただけると、非常に助かります。
……少々ダイレクトな処理となってしまいますが……これで求まるのではないかと思われます。
scriptRootとindexTrack・indexAnimationを使用しないで、(再生中ではないアニメーションを)直接DataAnimationから求める方法もありますが……そちらについては、上の方法から自明だと思いますので、ここでは省略させていただきます(単にindexAnimationを即値で与えるだけだと思いますので……)。
このindexAnimationは、
scriptRootのIndexGetAnimation関数で得られるアニメーションのインデックスそのものですので、特定名からアニメーションのインデックスを取得することも可能です。
一点注意点としては、上記でのscriptRoot.DataAnimation(Script_SpriteStudio6_DataAnimationクラス)はScriptableObjectですので(つまり動作上でのマスタデータです)、書き換えたりしてしまうと、現在動作しているプロジェクトのアニメーション全体に影響が及んだり・最悪様々な誤動作を引き起こすので、基本的には内容を変更したりしないでください。
以上で望まれた内容になっているのであれば、非常に幸いです。
何卒今後ともよろしくお願いいたします。