NavMesh.CalculateTriangulation生成NavMesh的模型
#
public class ExportNavMesh { [MenuItem("Tool/Export NavMesh")] public static void Export() { var navMeshTriangulation = NavMesh.CalculateTriangulation(); //新建文件 var scene = SceneManager.GetActiveScene(); var sceneFolder = Path.GetDirectoryName(scene.path); var modelFileFolder = Path.Combine(sceneFolder, scene.name); if (!AssetDatabase.IsValidFolder(modelFileFolder)) { var guid = AssetDatabase.CreateFolder(sceneFolder, scene.name); if (string.IsNullOrEmpty(guid)) { Debug.LogError($"{modelFileFolder} create fail"); return; } } var modelFilePath = Path.Combine(modelFileFolder, "NavMeshModel.obj"); Debug.Log($"NavMeshModel path: {modelFilePath}"); using (var sw = new StreamWriter(modelFilePath)) { //顶点 for (var i = 0; i < navMeshTriangulation.vertices.Length; i++) { var vert = navMeshTriangulation.vertices[i]; sw.WriteLine($"v {-vert.x} {vert.y} {vert.z}"); //这边注意, x要变为负号, 否则导入的模型在x方向是翻转的, 貌似是左手坐标系右手坐标系的问题 } sw.WriteLine("Plane1"); //索引 for (var i = 0; i < navMeshTriangulation.indices.Length; i += 3) { var indices = navMeshTriangulation.indices; sw.WriteLine($"f {(indices[i] + 1)} {(indices[i + 1] + 1)} {(indices[i + 2] + 1)}"); } } AssetDatabase.Refresh(); Debug.Log("导出NavMesh成功"); } }
【参考】
Unity中实现动态NavMesh导航_Hello Bug.的博客-CSDN博客_unity动态navmesh
Unity在运行时使用导入器在obj中翻转x坐标-Java 学习之路 (javaroad.cn)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!