使用unity的API   NavMesh.CalculateTriangulation 可以获取NavMesh数据

首先 我们创建一个新的工程 保存一个test场景

然后在场景中添加一个Plane作为地面可以寻路,添加几个cube作为障碍物,添加一个灯光  如图

点击左上角Window->Navigation     打开Navigation窗口

选中plane对象设置参数 如图

同样的操作选中cube设置参数 不过Navigation Area参数为Not Walkable

最后点击右下角Back按钮

烘焙成功 在Naviagtion窗口激活状态下 Scene视图如下

寻路准备工作已经完成

现在我们需要获取到NavMesh数据

在工程中添加代码

代码如下:

using System.IO;
using UnityEditor;
using UnityEngine.SceneManagement;
using UnityEngine; //navmesh导出数据
public class NavMeshExport : MonoBehaviour
{
[MenuItem("NavMesh/Export")]
static void Export()
{
Debug.Log("NavMesh Export Start"); NavMeshTriangulation navMeshTriangulation = NavMesh.CalculateTriangulation(); //文件路径 路径文件夹不存在会报错
string path = Application.dataPath + "/AStar/obj/" + SceneManager.GetActiveScene().name + ".obj"; //新建文件
StreamWriter streamWriter = new StreamWriter(path); //顶点
for (int i = ; i < navMeshTriangulation.vertices.Length; i++)
{
streamWriter.WriteLine("v " + navMeshTriangulation.vertices[i].x + " " + navMeshTriangulation.vertices[i].y + " " + navMeshTriangulation.vertices[i].z);
} streamWriter.WriteLine("g pPlane1"); //索引
for (int i = ; i < navMeshTriangulation.indices.Length;)
{
streamWriter.WriteLine("f " + (navMeshTriangulation.indices[i] + ) + " " + (navMeshTriangulation.indices[i + ] + ) + " " + (navMeshTriangulation.indices[i + ] + ));
i = i + ;
} streamWriter.Flush();
streamWriter.Close(); AssetDatabase.Refresh(); Debug.Log("NavMesh Export Success");
}
}

点击NavMesh-> Export 按钮 导出NavMesh数据 保存在obj文件夹

注意:

1.如果obj文件夹不存在 会报错

2.obj文件导入unity时会自动生成一个Materials文件里面有一个材质球 可以自己删除

链接: https://pan.baidu.com/s/1u4m4HYTGuoLwTg7U66a_Cg 密码: u81j

unity A*寻路 (一)导出NavMesh数据的更多相关文章

  1. Unity 导出NavMesh (可行走区域判定) 数据给服务器使用

    cp790621656 博客专家 Unity 导出NavMesh (可行走区域判定) 数据给服务器使用 发表于2016/9/26 18:15:11  1089人阅读 分类: Unity MMO 这个 ...

  2. 关于 Unity NavMesh 数据的导出和使用

    上周的工作重点转移到服务器寻路上来,刚刚做完没几天,总结一下,当时团队讨论的结果是使用 Unity 原生的 NavMesh 系统,然后将数据导出到服务器使用.我最初的思路是将导出的网格加载到服务器后, ...

  3. unity A*寻路 (二)读取NavMesh数据

    上一章节我们已经看了怎么获得NavMesh数据保存为obj 这一章节我们来读取NavMesh数据 首先我们要定义两个结构体 点 和 三角形 为什么不用unity自带的Vector3呢? 相信你们应该已 ...

  4. Unity关于用LoadLevelAdditiveAsync导致新场景的Navmesh数据不正确Loading条的实践

    为了解决用Application.LoadLevelAdditiveAsync 导致新场景的Navmesh数据不正确(我们用的是4.63),我们现在loading条做法是先切到Loading的场景,然 ...

  5. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新

    本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...

  6. OpenSceneGraph 笔记--如何导出三角形数据

    OpenSceneGraph 笔记--如何导出三角形数据 转载:http://blog.csdn.net/pizi0475/article/details/5384389 在OpenSceneGrap ...

  7. 【Telerik】<telerik:RadComboBox>导出列表数据

    近来在做项目,做到导出功能.使用<telerik:RadComboBox>的下拉框来实现导出部分或导出所有数据的功能.

  8. 使用BCP导出导入数据

    bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据. 使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导出到数 ...

  9. mysqldump导出部分数据的方法: 加入--where参数

    mysqldump导出部分数据的方法: 加入--where参数 mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径 my ...

随机推荐

  1. 记录 serverSocket socket 输入,输出流,关闭顺序,阻塞,PrintWriter的一些问题.

    关于socket.getOutputStream() 的一些问题, OutputStream的flush是一个空方法,所以需要另一个实现了Flush的流来包装一下 这里为什么使用PrintWriter ...

  2. C语言老司机学Python (四)

    字符串格式化: 可以使用类似c语言中sprintf函数的方法进行格式化,但是函数名称是print() 如:print('常量 PI 的值近似为:%5.3f.'  %  var_PI) 注意var_PI ...

  3. SQL语句学习

    看似简单,但其实包含很多技巧思维 1.查询课程表中所有科目大于80的学生 select distinct name from student where name not in (select nam ...

  4. web工程导入新环境的注意事项

    问题一:The type java.lang.Object cannot be resolved. 解决办法: 当你在Eclipse引用不同版本JDK工程时会发生该问题.由于你开发环境中应用了多个版本 ...

  5. CSRF与xss的区别

    CSRF:无法获取受害者的cookie,无法看到cookie:               只是利用受害者是被服务器信任的(靠验证cookie),而给服务器发送请求: xss:利用cookie只是xs ...

  6. HI3531的DDR3配置流程

    DDR3 初始化配置流程 系统上电之后,必须先完成DDR3 SDRAM 的初始化操作,系统才能访问DDR3 SDRAM.在进行初始化之前需要注意以下几点: 对DDR3 SDRAM 进行上电操作时,需要 ...

  7. Linux显示内存统计最大和最小的详情

    Linux显示内存统计最大和最小的详情 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -l total used free shared buffe ...

  8. 从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!

    前言 见解有限,如有描述不当之处,请帮忙指出,如有错误,会及时修正. 为什么要梳理这篇文章? 最近恰好被问到这方面的问题,尝试整理后发现,这道题的覆盖面可以非常广,很适合作为一道承载知识体系的题目. ...

  9. mybatis快速入门(八)-spring-mybatis动态代理整合

    将上一节的代码改造下就好了,不过这一章会加一个basedaomapper.废话不多说直接上代码了. 创建一个BaseDaoMapper.java package cn.my.sm.mapper; /* ...

  10. 【BZOJ4552】排序(线段树,二分答案)

    [BZOJ4552]排序(线段树,二分答案) 题面 BZOJ 题解 好神的题啊 直接排序我们做不到 怎么维护? 考虑一下,如果我们随便假设一个答案 怎么检验它是否成立? 把这个数设成\(1\),其他的 ...