Unity2019.3.10f1 URP7.3.1
マイナーなシチュエーションなんで背景説明から
モバイルとwindows版両対応するため、キャラクターはローポリ版とハイポリ版を作っている。それぞれリグレベルで分けていた。
またアバター編集できるようになっていて、顔から服、小物まで差し替え可能。ただし頂点数少ないパーツなんかはローポリ・ハイポリの区別なく共通である。具体的には顔はきれいに見せたい意図があるのでモバイルとwindowsで区別ない(そのかわり頂点数は最適化してある
Optimize Game Object
最適化のため、こいつにチェックいれました。
そうしたらなぜかモバイル版でタイトルのエラーが発生しました。
該当のモデルを空のシーンに表示しアニメさせましたが正常でした。着せ替えのタイミングで死んでいました。
原因
エラーメッセージ見れば分かるんですが骨の構成が一致してません。
詳しく言うと、着せ替え用衣装のfbxの骨構成が、キャラクターの骨構成と一致していませんでした。
どうやらOptimize Game Objectにチェックを入れると、骨構成の厳密度があがるのか、BlenderのArmature名まで一致判定するようになります。そして着せ替え衣装はwindows版のリグとともに出力していました。モバイル版とwindows版でArmature名分けていたため、モバイル版キャラクターリグと着せ替え衣装(=windows版リグ)とで不一致になったというわけです。
対策
Armature名も同一にしろよということですね…
ちなみに、今はたまたまモバイル版、windows版のRoot以下の構成は同じです。しかし負荷軽減のためモバイル版リグの骨を削った場合どういうことが起きるかは調べていません。
もしエラーが出る場合は、着せ替え衣装も全てモバイル版とwindows版で分ける必要があります。