コンテンツにスキップ

ビルド時に"Index was out of range. Must be non-negative and less than the size of the collection."が表示される

現象

UV2が用いられていないメッシュのオブジェクトがMeshにアタッチされており、Mesh Rendererを利用している場合、ビルド時にエラーとなり、下記画像のエラーがコンソールに表示される。

エラー画像

発生環境

SDKバージョン : 4.1.1 OS : Windows 10 Unity : 2019.4.31.f1 ブラウザ : Google Chrome

解決までに試したこと

正常にビルドできるオブジェクトと設定の比較 見慣れないエラーだったので、メッシュオブジェクトの設定を正常にビルドできたオブジェクトと比較した。

正常にビルドできたオブジェクト エラーが発生したオブジェクト
正常にビルドできたオブジェクト エラーが発生したオブジェクト

見比べたところ、uv2の表示がない事に気が付いた。 エラーの原因はuv2がないのにMesh Rendererを使用しようとしていたことだった。

結論

uv2のないメッシュをMesh Rendererで扱おうとするとビルドエラーになる。

uv2を含むようにモデリング班にメッシュの作り直し依頼を行うか、 Skinned Mesh Rendererを使用するか、 テクスチャを別のオブジェクトに貼り付けて使おう。

その他知見

uv2を含まないメッシュであっても、Skinned Mesh Rendererを用いることでビルドが通り、Vket Cloudに反映可能。

Info

Skinned Mesh Rendererを用いたオブジェクトはhemアニメーションで動かすことができないため、アニメーションで動かすオブジェクトを作成したいときはメッシュの作り直しで対応しましょう。