🕸️ Unity Editor上でメッシュを保存する

2022-11-19 /Development #Unity

Plateau を使う機会があったのでせっせとファイルをダウンロードして軽量化していたのですが、 Mesh Baker でベイクした後、そのままだとメッシュが空白で表示されていてPrefab化やExportして別のシーンやプロジェクトにもっていく事ができないみたいでした。

調べてみたら解決方法は以下の記事にあるように、メッシュデータを *.asset ファイルとして保存する必要がありました。

Unityでメッシュをスクリプトから保存する方法 https://3dcg-school.pro/unity-save-mesh-by-scripts/

そのまま記事に記載してくださっている通りにやるだけで大丈夫なのですが、今回は変換したいファイルがたくさんあり、せっせとゲームオブジェクトにアタッチしてはpathを書いて、というのが大変そうだったので「書き出しファイルのパスや名前を設定しなくても [ゲームオブジェクトの名前].asset で保存されるように」「右クリックしなくてもインスペクタウィンドウにボタンが表示されるように」の2点の改良を加えて使用しました。また使う事があるかもしれないのでメモ。

using UnityEngine;

#if UNITY_EDITOR
using UnityEditor;
#endif

public class MeshCreator : MonoBehaviour
{
  [SerializeField]
  MeshFilter mesh;

  public void Action()
  {
#if UNITY_EDITOR
    AssetDatabase.CreateAsset(mesh.mesh, $"Assets/{mesh.gameObject.name}.asset");
    AssetDatabase.SaveAssets();
#endif
  }
}

#if UNITY_EDITOR
[CustomEditor(typeof(MeshCreator))]
public class MeshCreatorEditor : Editor
{
  public override void OnInspectorGUI()
  {
    base.OnInspectorGUI();

    if (GUILayout.Button("Create *.asset"))
    {
      MeshCreator t = target as MeshCreator;
      t.Action();
    }
  }
}
#endif

このブログの*.csのハイライト、あんまりいい色じゃないな…

Comment
comments powered by Disqus
Profile

石原 悠 / Yu Ishihara

デザインとプログラミングと編み物とヨーグルトが好きです。