新しいLive2D公式コミュニティ(日本向け)が公開されました!
ぜひご利用ください!
Live2D公式コミュニティ

■このコミュニティの今後について
このコミュニティ(forum.live2d.com)につきましては、しばらくの間新コミュニティと並行して運営しますが、2023年夏ごろを目処に方針を決定する予定です。
(2022/12/27追記 2022年内を目処に閉鎖 から変更しております)
内容については決定次第お知らせいたします。
海外向けコミュニティについては変更ございません。
Live2Dに関するユーザーのみなさま同士の交流・ご質問・不具合の報告・提案・要望などについて是非お寄せください。
※Live2D公式スタッフからの発言や回答については確約できないことを予めご了承ください。

Live2D ヘルプ

Cubism Editorダウンロード / 動作環境
Cubism SDKダウンロード / 対応表
Cubism 製品利用ライセンス(SDK含)

Cubism 製品のライセンスについてのお問い合わせはこちら
nizima 及び nizima 製品についてのお問い合わせはこちら
【各最新OSの対応状況について】
Cubism Editorは 4.1.02 正式版以降でWindows 11 及び macOS Monterey に対応しております。ぜひ最新版をご利用ください。
※macOSをお使いの方でOSアップデートする際は必ずCubism Editorのライセンスを解除してください。
Cubism EditorをインストールしているmacOSをアップグレードしたい
Cubism SDKについては各SDKのREADMEまたはNOTICEをご確認ください。

【Mac各機種への対応状況について】
現在、Cubism EditorはApple M1チップ搭載機種には対応しておりません。
詳細は 動作環境 をご参照ください。
関連するお問い合わせへの対応はこの文章をもって代えさせていただきます。
Cubism 製品のマニュアル・チュートリアルはこちら
 
Cubism Editorマニュアル    Cubism Editorチュートリアル    Cubism SDKマニュアル    Cubism SDKチュートリアル

Cubism3 SDK でのAssetBundleについて

Unity Cubism3 SDK で作られたデータをAssetBundleで配信するのに困っており質問です。

Unityでインポートしたとき自動で作られるPrefabをAssetBundleに入れて配信する設計にしたのですが、
この場合GlobalMaskTextureがAssetBundleに入るのでAssetBundle.Unload(true)で解放したときに
CubismMaskTextureのOnDestroyが呼ばれないためCubismMaskCommandBuffer.RefreshCommandBufferで
nullエラーが出るようになります。

AssetBundle.Unload(false)を使ったとしてもCubismMaskCommandBufferを自分で掃除する必要があります。
ScriptableObject.Destroyを使うようなところは無かったのでそもそもCubismMaskTextureは削除することを考えていない?

そこで、解決策として以下の3つを考えたのですがAssetBundleで想定された利用方法があるのであれば知りたいです。

・CubismMaskCommandBuffer.RemoveSourceを自分で呼び出す
各AssetBundle毎にGlobalMaskTextureのInstanceが作られるならそのキャラを消すときに外してしまって問題無いはず。

・GlobalMaskTextureだけのAssetBundleを作って紐付ける
GlobalMaskTextureの入ったAssetBundleと紐付けるようにAssetBundleを作成、
GlobalMaskTextureのAssetBundleを常に開いた状態にすることでインスタンスが常に残るようにする。

・そもそもインポートで作られたPrefabを使わない
CubismModel3Jsonの実装を参考にCubismMocのデータからCubismModelを作る実装。

コメント

  • @toshi さん

    AssetBundleにGlobalMaskTextureを入れる目的によって最適な解決策が変わってきてしまいます。
    よろしければ、その目的をお教えいただけませんか?

    > そもそもCubismMaskTextureは削除することを考えていない?
    GlobalMaskTextureのことだと思われますが、こちらはおっしゃる通り削除することを想定しておりません。
    ただし、CubismMaskTextureをユーザ側で別途作成したインスタンスはお使い頂くことも可能です。
  • 編集済: 9月 2017
    @y_a_s_(Dev Staff)

    返事が遅くなってしまいました。
    最終的にCubismMocとTextureのデータをAssetBundleに入れて
    使うときにCubismModelを作るようにしました。
    生成するときは重くなりますがリソースの管理のしやすさとCubismBuiltinPickersが
    そのまま使えるのでMaterialの管理も楽になりました。

    >AssetBundleにGlobalMaskTextureを入れる目的
    こちらはインポートで作られるPrefabをAssetBundleに入れようとすると
    それに紐付くアセットが自動で入るためGlobalMaskTextureも一緒に入ってしまう状態です。

    理想はAssetBundleにGlobalMaskTextureを含まずアプリ側に入っている
    CubismMaskTexture.GlobalMaskTextureが利用できれば良いのですが
    GlobalMaskTextureだけのAssetBundleを作るしか良い方法が思いつきませんでした。
コメントするにはサインインまたは登録して下さい。