スクリプトリファレンス([RootEffect]コールバック) - SpriteStudio/SS6PlayerForUnity GitHub Wiki

SS6Player for Unity(以降「SS6PU」)のエフェクト制御用クラス(Script_SpriteStudio6_RootEffect)の様々なタイミングで受け取ることができるコールバック関係の機能群のスクリプトリファレンスです。


時間経過管理関数定義

プロパティ(動的)

Library_SpriteStudio6.CallBack.FunctionTimeElapseEffect FunctionTimeElapse

定義関数型

delegate float FunctionTimeElapseEffect(Script_SpriteStudio6_RootEffect scriptRoot)

定義関数引数

  • scriptRoot : 呼出元のエフェクトオブジェクト

定義関数返値

経過時間(1.0fが1秒)

解説

エフェクトオブジェクト毎に(呼出元の)「前の処理サイクルから今回の処理サイクルまでにかかった時間」を決定する関数を定義することが可能です。
nullに設定すると、初期状態に戻し・その場合の経過時間は「UnityEngine.Time.deltaTime」と等価になります。

本コールバックは、MonoBehaviour.LateUpdateのタイミングで発生します。


再生終了検知

変数(動的)

Library_SpriteStudio6.CallBack.FunctionPlayEnd FunctionPlayEnd

定義関数型

delegate bool FunctionPlayEndEffect(Script_SpriteStudio6_RootEffect scriptRoot)

定義関数引数

  • scriptRoot : 呼出元のアニメーションオブジェクト

定義関数返値

true ... シーンに残る
false ... シーンから自身を抹消(Destroy)する

解説

本プロパティは存在していますが、現在効果していません(現在は予約設置状態です)。
そう遠くない更新で実装を行う予定です。

エフェクトオブジェクト自体が再生終了した時に発行されるコールバックの受領関数(デリゲート)を定義します。
nullを設定するとコールバックは発行されません。

エフェクトの終了の条件は下記の条件が全て成立したタイミングになります。

  • エフェクトの再生が終了フレームに達した時

本コールバックは、MonoBehaviour.LateUpdateのタイミングで発生します。

受領関数がfalseを返した場合、呼出元のアニメーションオブジェクトは自分自身をDestroyしてシーンから消去します。


Timeline制御コールバック

変数(動的)

Library_SpriteStudio6.CallBack.FunctionTimelineEffect FunctionTimeline

定義関数型

delegate bool FunctionTimelineEffect(
        Script_SpriteStudio6_RootEffect scriptRoot,
        KindSituationTimeline situation,
        float timeElapsed,
        double timeLocal
    )

定義関数引数

  • scriptRoot : 呼出元のエフェクトオブジェクト
  • situation : 呼び出されたシチュエーション
  • timeElapsed : 前回呼出からの経過時間(1.0が1秒)
  • timeLocal : タイムライン上で経過した時間(1.0が1秒・開始を0.0とした時の絶対経過時間)

定義関数返値

(なし)

解説

エフェクトオブジェクトがTimeline上で制御されている最中に、発生するコールバックの受領関数(デリゲート)を定義します。
このコールバックを使用して、エフェクトオブジェクト自体の制御なども行うことが可能です(ただし、あまり込み入った処理を行うことや・Playable Trackクリップとの混用については推奨しかねます。スクリプトからの複雑な制御を行う場合には、Playable Trackを使用した方がTimelineのワークフローに適していると思われます)。

situationによって呼び出された状況を把握することができます。

  • Library_SpriteStudio6.KindSituationTimeline.START
    Timeline上で制御が始まった時に発生します。
    この時のtimeElapsedとtimeLocalはfloat.NaNです。
  • Library_SpriteStudio6.KindSituationTimeline.END
    Timeline上で制御が終了する時に発生します。
    この時のtimeElapsedとtimeLocalはfloat.NaNです。
  • Library_SpriteStudio6.KindSituationTimeline.UPDATE
    Timeline上で制御されている最中に毎処理ループで発生します。