NavMeshExport.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using UnityEditor;
  8. using UnityEngine;
  9. using UnityEngine.AI;
  10. using UnityEngine.SceneManagement;
  11. public class NavMeshExport
  12. {
  13. #if UNITY_EDITOR
  14. [MenuItem("LCFrameWork/NavMeshExport")]
  15. static void Export()
  16. {
  17. Debug.Log("NavMesh Export Start");
  18. NavMeshTriangulation navMeshTriangulation = NavMesh.CalculateTriangulation();
  19. //文件路径 路径文件夹不存在会报错
  20. string path = Application.dataPath + "/" + SceneManager.GetActiveScene().name + ".obj";
  21. //新建文件
  22. StreamWriter streamWriter = new StreamWriter(path);
  23. //GameObject speresGO = new GameObject("speres");
  24. //顶点
  25. for (int i = 0; i < navMeshTriangulation.vertices.Length; i++)
  26. {
  27. //streamWriter.WriteLine("v " + navMeshTriangulation.vertices[i].x + " " + navMeshTriangulation.vertices[i].y + " " + navMeshTriangulation.vertices[i].z);
  28. streamWriter.WriteLine("v " + (int)navMeshTriangulation.vertices[i].x + " " + 0 + " " + (int)navMeshTriangulation.vertices[i].z);
  29. //GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
  30. //sphere.GetComponent<Renderer>().material.color = Color.red;
  31. //sphere.transform.localScale = Vector3.one * 0.5f;
  32. //sphere.transform.parent = speresGO.transform;
  33. //sphere.transform.position = navMeshTriangulation.vertices[i];
  34. }
  35. streamWriter.WriteLine("g pPlane1");
  36. //索引
  37. for (int i = 0; i < navMeshTriangulation.indices.Length;)
  38. {
  39. streamWriter.WriteLine("f " + (navMeshTriangulation.indices[i] + 1) + " " + (navMeshTriangulation.indices[i + 1] + 1) + " " + (navMeshTriangulation.indices[i + 2] + 1));
  40. i = i + 3;
  41. }
  42. streamWriter.Flush();
  43. streamWriter.Close();
  44. AssetDatabase.Refresh();
  45. Debug.Log("NavMesh Export Success");
  46. }
  47. #endif
  48. }