CubismUpdateController

[最終更新日:2020/10/21]

概要

CubismUpdateControllerをPrefabにアタッチすることで、Cubism SDK for Unityの各コンポーネントの実行順を制御することができます。

OW方式では各コンポーネントの実行順序が重要となるため、CubismUpdateControllerを使用して仕様に沿うことが必須となります。
実行順の制御が不要などでCubismUpdateControllerを使用しない場合、コンポーネントの実行順はUnity側で決められるため、実行順によってはExpressionなどの機能が正しく処理されないことがあります。

ユーザが独自に作成したコンポーネントの実行順を制御するには、そのコンポーネントにICubismUpdateableを実装します。

 

ICubismUpdateableの実装

実行順の制御対象となるコンポーネントにてICubismUpdateableインターフェイスを継承します。

CubismUpdateControllerがアタッチされていない場合、OnLateUpdateの処理は実行されないため、以下のスニペットではそのコンポーネント単独でも動作するようにしています。

  • HasUpdateController
    • PrefabにCubismUpdateControllerがアタッチされているかを設定します。
  • NeedsUpdateOnEditing
    • Unityでシーンが非実行中にも更新を行う必要があるかを返します。
      CubismUpdateControllerはエディターモードでも実行されるので、そのコンポーネントが非実行中にも更新する必要がない場合はfalseを返します。
  • ExecutionOrder
    • そのコンポーネントの実行順を返します。
      この値が小さいコンポーネントほど先に呼び出されます。
      Cubism SDK for Unity の各コンポーネントの実行順序は CubismUpdateExecutoinOrder に定義されています。
    •  ユーザが実行順序を制御するコンポーネントを追加した場合、CubismUpdateExecutoinOrderの定義を参考にして、ここで返す値でどのタイミングで呼び出されるかを注意してください。
      • 例(独自のコンポーネントをCubismLookControllerとCubismPhysicsControllerの間のタイミングで呼び出したい場合):
        • CubismLookControllerは700、CubismPhysicsControllerは800が設定されるため、独自のコンポーネントは750を返すよう設定します。
  • OnLateUpdate()
    • CubismUpdateControllerによって実行順序を制御され呼び出される関数です。
      そのコンポーネントが行う更新処理を記述します。

 

実行中にコンポーネントを追加、削除する場合の注意

CubismUpdateControllerが実行順を制御するコンポーネントは、OnEnable()のタイミングで行います。
すべてのコンポーネントがあらかじめPrefabにアタッチされている場合は問題ありませんが、シーン実行中、動的にコンポーネントを追加または削除した場合、明示的にCubismUpdateController.Refresh() を呼び出して読み込み直す必要があります。

© 2010 - 2022 Live2D Inc.