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

最終更新: 2020年1月31日

このページはCubism 4.2以前の古いバージョン向けです。 最新のページはこちら

概要

基本的にはパフォーマンスチューニングは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からモデルの生成と破棄を繰り返すたびにテクスチャが残り続け、メモリを圧迫することになります。

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

この記事はお役に立ちましたか?
はいいいえ
この記事に関するご意見・
ご要望をお聞かせください。