Cubism SDK for Unityのパフォーマンス・チューニングについて

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

 

概要

基本的にはパフォーマンスチューニングはUnityのプロファイラーを用いて処理の重い箇所を確認しながら行ってください。

Cubism SDKにおいては、モデルの構造によってプログラム上でのパフォーマンスに影響が出る場合があります。
また、Live2D SDK for Unityは構造のわかりやすさを優先しているため、一部意図的にパフォーマンスを犠牲にしている部分があります。
以下では、SDKのパフォーマンスに影響がある点を説明します。

 

モデルの構造

詳細については こちら をご覧ください。

 

プロジェクトの構造

Unityのイベント関数

前述の通りLive2D SDK for Unityは構造のわかりやすさを優先しております。
そのため、各コンポーネントの更新処理は、LateUpdate()などのUnityのイベント関数から行っています。
このUnityのイベント関数は、呼び出すコストが少なくありません。
SDKをそのまま使用してモデルを複数表示した場合、実行環境によっては非常にパフォーマンスが悪くなってしまうことがございます。
パフォーマンスを重視するなら、各コンポーネントの更新処理をひとつのControllerから呼び出すようにすることが推奨されています。
Cubism SDK for Unityに同梱されているCubismUpdateControllerは、Cubism SDKのコンポーネントの実行順を制御するために同様の処理を行っているため、上記の対応を行うのであればCubismUpdateControllerの実装が参考になります。

CubismUpdateControllerの詳細は こちら をご覧ください。

 

マスク用テクスチャの扱い

Cubismのモデルで使用されるマスク用のテクスチャはグローバルなもの一つを共有して使用しています。
Unity上で、Prefabが生成されたタイミングでCubismMaskControllerにその参照が設定されます。

しかし、モデルのPrefabをそのままAssetBundleにした場合、Prefabをインスタンス化する際に、CubismMaskControllerに設定されたマスク用テクスチャは参照からコピーが設定された状態に変化します。
そのため、この仕様を無視すると、AssetBundleからモデルの生成と破棄を繰り返すたびにテクスチャが残り続け、メモリを圧迫することになります。

この現象の詳細と対策については こちら をご覧ください。

 

 

© 2010 - 2020 Live2D Inc.