【Unity】演出を Animator じゃなくて Inspector で設定するツール ~1~ - うにてぃブログ
の記事の続きです
スクリプトでの制御
各Sequence は ComponentTween クラス が管理するようになっているので
登録したIDを指定して
ComponentTween.Stop("ID");
で停止したり
ComponentTween.Play("ID");
で再生できます
終了時に処理を呼び出す
public event CompleteDelegate CompleteEvent;
終了時のイベントように上記が定義してるので、こちらにイベントを登録しておけば終了時に呼び出してくれます
しかし Loop するような設定をしていると呼び出されないので注意してください
Module の追加
ModuleAbstract を継承したクラスを作成すれば自動的に Inspector の一覧にも表示されます
例えば RectTransform のモジュールを作る場合は RectTransformModule を作成し
[Serializable]
public abstract class RectTransformModule : ModuleAbstract
{
[NonSerialized]
protected RectTransform[] Components;
protected override int GetComponent(GameObject[] objs)
{
Components = GetComponentsToArray<RectTransform>(objs);
return Components.Length;
}
}
RectTransform の位置を制御するための RectTransformPosition を RectTransformModule を継承して作成します
その後パラメータとして扱う型を ParamType に設定し
GetValue で値の取得処理 SetValue で値の設定処理を書くだけです
[Serializable]
public class RectTransformPosition : RectTransformModule
{
public override Type ParamType => typeof(Vector2);
protected override Vector4[] GetValue()
{
return Components.Select(c => TweenValue.Vector2ToVector4(c.anchoredPosition))
.ToArray();
}
protected override void SetValue(TweenValue[] values)
{
for (var i = 0; i < values.Length; i++)
Components[i].anchoredPosition = values[i].GetVector2();
}
}