前提・実現したいこと
初めまして。現在Unityを仕事で利用しているのですが、Unityエディター上での動作と、exe出力したものの動作が異なっています。
調べた限りfbxのテクスチャーuvを指定している関数の呼び出しで下の例外が発生していました。
Unityエディター上で例外も発生せずにfbxのuv指定もうまくできていますが、exeで動作しません何かご存じの方がいたらよろしくお願いします。
発生している問題・エラーメッセージ
nullreferenceexception object reference not set to an instance of an object
該当のソースコード
haimesh[i] = mines.transform.GetChild(i).GetComponent<MeshUV>(); haimesh[i].Index = Hais[i]; rightmesh[i] = rights.transform.GetChild(i).GetComponent<MeshUV>(); rightmesh[i].Index = Hais[i]; centermesh[i] = centers.transform.GetChild(i).GetComponent<MeshUV>(); centermesh[i].Index = Hais[i]; leftmesh[i] = lefts.transform.GetChild(i).GetComponent<MeshUV>(); leftmesh[i].Index = Hais[i]; try { haimesh[i].ChangeIndex(); rightmesh[i].ChangeIndex(); leftmesh[i].ChangeIndex(); centermesh[i].ChangeIndex(); } catch (Exception e) { debugtext.text += i.ToString(); debugtext.text += " " + e.ToString() + "\r\n"; debugtext.text += " " + e.Message + "\r\n"; }
試したこと
他のここに書いていない箇所でもtry catchを使用し例外を探しましたが、ここで発生しています。
補足情報(FW/ツールのバージョンなど)
使用しているunity は 2019.3.141fです
そのfbxを読み込んでいる箇所のコード(もしくは設定)も記載してください。
(Unityでは読み込みなどに失敗した場合、nullが返される仕様になっていることがほとんどです)
現在unityプロジェクトにAsstes/Meshフォルダを作成、そこにfbx pngを配置しそのfbx pngでプレファブを作成しています。作成したプレファブをヒエラルキーにからのオブジェクトを作りそのからオブジェクトの子供として配置しています。
とりあえず、haimesh[i]がnullになっているか確認してみてください。
nullである場合、~.GetComponent<MeshUV>();での取得に失敗しています。
nullでない場合、haimesh[i].ChangeIndex();の中で何かが起こっているはずなので、そこを確認してみてください。
(あくまで私の予想ですので、他が原因かもしれませんが)