ようこそ!

初めてですか? 参加するには、どちらかのボタンをクリックしてください!

【Live2D Creators Circleのご案内】
Live2Dでは現在、業務をお手伝いしていただけるユーザーの方々を募集しています。
もし、ご興味がありましたら下記URLより詳細をご確認ください。
https://goo.gl/0oBmkq
Live2Dの様々な情報をお届けするリアルイベント「alive 2017」参加応募受付中!

Live2Dを使ったゲームタイトルを持つ企業による開発秘話のセッションなど
さまざまなコンテンツを用意しています!

初心者の方も経験者の方も参加可能ですので、ぜひ一度特設サイトをご覧ください。
(応募期限2017/11/12まで)

詳しい募集要項はこちら↓↓

特設サイト:http://alive2017.live2d.com/ 

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をユーザ側で別途作成したインスタンスはお使い頂くことも可能です。
  • edited 09/19
    @y_a_s_(Dev Staff)

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

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

    理想はAssetBundleにGlobalMaskTextureを含まずアプリ側に入っている
    CubismMaskTexture.GlobalMaskTextureが利用できれば良いのですが
    GlobalMaskTextureだけのAssetBundleを作るしか良い方法が思いつきませんでした。
Sign In or Register to comment.