BlenderやMayaで作成した3Dモデルをインポートすることはあっても、基本的にUnity上でメッシュデータを作成することはあまりありません。
もちろんメッシュデータを動的にスクリプトから作成することは可能です。しかし、そのメッシュを含むオブジェクトをプレハブ化しようとすると、メッシュデータが空っぽになってしまいます。そして、プレハブをシーンにドロップしても、メッシュが表示されません。
これは、スクリプトから作成したメッシュデータが.assetファイルとして保存されていないことが原因です。MeshFilterの項目が空白になっていると、メッシュがアセットとして保存されていません。
アセットとして保存するには、以下のようなスクリプトでアセットとして保存してください。
using UnityEditor;
using UnityEngine;
public class MeshCreator : MonoBehaviour
{
[SerializeField] private string path;
[ContextMenu("Make mesh from model")]
public void MakeMesh()
{
#if UNITY_EDITOR
var mesh = GetComponent<MeshFilter>();
AssetDatabase.CreateAsset(mesh.mesh, path);
AssetDatabase.SaveAssets();
#endif
}
}
保存先のパスは、Assets/~/○○.assetのように指定してください。拡張子の.assetを忘れないようにしましょう。
また、アクセスしやすいようにContextMenuアトリビュートを付けてます。コンポーネントを右クリックするとポップアップが現れるので、そこから呼び出すことができます。
基本的にこうしたケースにあたることはあまりないと思いますが、ちょっとハマってしまったので記事にしました。
.assetファイルの保存は重たい処理だと思います。実行時に使いたい場合は、もうちょっと別の方法を考えたほうがいいでしょう。ここで紹介したものは、あくまでエディターをメインとしていますので、ご注意ください。