Unityは2019.2.1f1を使っています。
Live2Dのモデルを動的に読み込みたい
次のココのコイン落としのバージョンではLive2Dモデルの差し替えを考えており、スクリプトからLive2Dモデルの読み込む方法をこちらのドキュメントを参考にしていたところ・・・StreamingAssetsという見慣れないフォルダ以下を参照する形になっていました。
StreamingAssets
これまでStreamingAssetsというものの存在を知らなかったのですが、これはアプリのインストール先プラットフォームによって弄られる事なくファイルをそのままプロジェクト内に配置したい時に使うフォルダなのだそうです。
そして、先程ドキュメントではStreamingAssetsにモデルファイルを置いているものとして実装されていました。絶対パスを指定してjsonファイルを動的に読み込む形になるようなので、なるほどこのフォルダを使うのが当然かと思われます。
エラー発生
しかし、いざモデルをStreamingAssetsに放り込んだ所、なぜか真っ白なモデルがシーンに生成され「NullReferenceException: Object reference not set to an instance of an object Live2D.Cubism.Editor.Importers.CubismImporter」みたいなエラーが出てしまいました。
なにかおかしいと思いStreamingAssets内を見てみると、インスペクタが空っぽの破損したprefabと、なぜかエクスプローラでのアイコンのままで表示されているテクスチャファイルを見つけました。
ちょっと調べてみると、どうやらStreamingAssetsにファイル(画像など)を直接インポートさせると問題が起こるらしいです(何じゃそりゃ)。
なのでStreamingAssetsに何かを置きたい時は、まず他のフォルダでインポートしてからこっちに移すという手順が必要だそうです。
そんなのわかるか!怒
ちなみに、StreamingAssets内にあるファイルに何か操作を加えるのもNGらしいです。
操作したい時はStreamingAssetsの外に移動して変更を加えてから戻しましょう。
今回用事があるのはLive2Dモデルのプレハブではないのでこのエラー(インポート失敗)は問題ないのかもしれませんが、何か気持ち悪いし何が起こるかわからないので大人しく外のフォルダにインポートしてから持ってくる事にしました。
コメント