gologiusの巣

プログラミング、モデリングなどのメモです。誰かの役に立てるとうれしいです。

Unity MeshFilter アクセスできない

MeshFilterはメッシュの大きさ等を取得できたりするコンポーネントです

MeshFilter f = GetComponent<MeshFilter>();
Vector3 size = f.mesh.bounds.max - f.mesh.bounds.min; //meshを包括するboxのサイズを取得(できるはず)

けどこんなエラーがでて困ってました.
Not allowed to access MeshFilter.mesh on prefab object. Use MeshFilter.sharedMesh instead UnityEngine.MeshFilter:get_mesh()

結果的にはprefabの要素にアクセスしてたのでエラーが出てました.
つまりこんな感じ

GameObject prefab = (GameObject)Resources.Load ("Prefabs/model");
MeshFilter f = prefab.GetComponent<MeshFilter>();
Vector3 size = f.mesh.bounds.max - f.mesh.bounds.min; //meshを包括するboxのサイズを取得(できるはず)

ですので,実体化?させたものを対象にすればエラーが取れました

GameObject prefab = (GameObject)Resources.Load ("Prefabs/model");
GameObject obj =(GameObject)Instantiate(prefab, Vector3.zero, Quaternion.identity);
MeshFilter f = obj.GetComponent<MeshFilter>();
Vector3 size = f.mesh.bounds.max - f.mesh.bounds.min; //meshを包括するboxのサイズを取得(できるはず)

ただ,エラーがおっしゃってる解決方法
instead UnityEngine.MeshFilter:get_mesh()
がよくわかりませんでした(使い方?がわからない)