独自のコンポーネントの実行順を制御させる

[最終更新日:2020/01/22]

ここでは、ユーザ独自のコンポーネントに対して、他のCubismのコンポーネント同士の実行順を制御する手順を説明します。
以下は[SDKのインポート~モデルを配置]をおこなったプロジェクトに追加することを前提とした説明となっています。

 

概要

Cubism SDK for UnityのOriginal Workflowのコンポーネントの中には、実行される順序に制限があるものがあります。

Cubism SDK for Unityでは、CubismUpdateControllerを用いることで制御することができ、上記のコンポーネントはこれによって実行順が制御されます。
CubismUpdateControllerが制御するコンポーネントは、CubismモデルのPrefabのルートにアタッチされたコンポーネントになります。

CubismUpdateControllerを用いれば、ユーザ独自のコンポーネントも同様に実行順を制���することが可能です。

ここでは例として以下のコンポーネントに対して実行順の制御を設定する手順を説明します。

 

 

1. Prefabにコンポーネントをアタッチ

Hierarchyに配置されたPrefabのルートのGameObjectに、CubismExampleControllerをアタッチします。
また、PrefabがOW形式でインポートされていない場合、CubismUpdateControllerもアタッチします。

 

 

2. コンポーネントにICubismUpdatableを実装

実行順を制御するコンポーネントにICubismUpdatableインターフェースを実装します。

CubismUpdateControllerは実行時にICubismUpdatableを実装したコンポーネントを取得し、それらの実行順を制御します。

 

ここで実装したICubismUpdatableインターフェースは以下のようになっております。

 

ExecutionOrderは、このコンポーネントの実行順を決める値になります。
この値が小さいほど他のコンポーネントよりも先に呼ばれます。
SDK同梱のコンポーネントに設定される値はCubismUpdateExecutionOrderに記述されています。

HasUpdateControllerは、ICubismUpdatableを実装したコンポーネントがCubismUpdateControllerのアタッチされていない場合、Unityのイベント関数から呼び出すようにするためのフラグです。

 

 

 

3. コンポーネントをCubismUpdateControllerに対応させる

CubismExampleControllerを以下のように修正します。

 

LateUpdate()で行っていた更新処理を、CubismUpdateControllerが呼び出すOnLateUpdate()に移します。

 

以上で実行順を制御させる設定は終了です。
このスクリプトをCubismモデルのPrefabにアタッチしてシーンを実行すると、このスクリプトの更新処理がCubismUpdateControllerによって呼び出されます。

 

© 2010 - 2020 Live2D Inc.