unity A*寻路 (一)导出NavMesh数据
使用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数据的更多相关文章
- Unity 导出NavMesh (可行走区域判定) 数据给服务器使用
cp790621656 博客专家 Unity 导出NavMesh (可行走区域判定) 数据给服务器使用 发表于2016/9/26 18:15:11 1089人阅读 分类: Unity MMO 这个 ...
- 关于 Unity NavMesh 数据的导出和使用
上周的工作重点转移到服务器寻路上来,刚刚做完没几天,总结一下,当时团队讨论的结果是使用 Unity 原生的 NavMesh 系统,然后将数据导出到服务器使用.我最初的思路是将导出的网格加载到服务器后, ...
- unity A*寻路 (二)读取NavMesh数据
上一章节我们已经看了怎么获得NavMesh数据保存为obj 这一章节我们来读取NavMesh数据 首先我们要定义两个结构体 点 和 三角形 为什么不用unity自带的Vector3呢? 相信你们应该已 ...
- Unity关于用LoadLevelAdditiveAsync导致新场景的Navmesh数据不正确Loading条的实践
为了解决用Application.LoadLevelAdditiveAsync 导致新场景的Navmesh数据不正确(我们用的是4.63),我们现在loading条做法是先切到Loading的场景,然 ...
- C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新
本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...
- OpenSceneGraph 笔记--如何导出三角形数据
OpenSceneGraph 笔记--如何导出三角形数据 转载:http://blog.csdn.net/pizi0475/article/details/5384389 在OpenSceneGrap ...
- 【Telerik】<telerik:RadComboBox>导出列表数据
近来在做项目,做到导出功能.使用<telerik:RadComboBox>的下拉框来实现导出部分或导出所有数据的功能.
- 使用BCP导出导入数据
bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据. 使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导出到数 ...
- mysqldump导出部分数据的方法: 加入--where参数
mysqldump导出部分数据的方法: 加入--where参数 mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径 my ...
随机推荐
- CodeForces - 740C
这题是思维考察.由于区间个数可能会很多,暴力完全没法下手.首先要明确区间长度最小的就决定了最后的答案,因为最小区间必须要要从0开始到区间长度减1才能满足让mex最大.接下来就是考虑如何填充数组才能让所 ...
- spring oauth2 ,spring security整合oauth2.0 JdbcTokenStore实现 解决url-pattern .do .action
参考以下两个文章: http://www.cnblogs.com/0201zcr/p/5328847.html http://wwwcomy.iteye.com/blog/2230265 web.xm ...
- 【重磅】PRO基础版免费,是时候和ExtJS说再见了!
三石的新年礼物 9 年了,FineUI(开源版)终于迎来了她的继任者 - FineUIPro(基础版),并且完全免费! FineUIPro(基础版)作为三石奉献给社区的一个礼物,绝对让你心动: 拥 ...
- java复习
局部变量的作用域只在方法内部有效,在方法外无效 用类型作为形参传递会改变实参的值,但是String是特殊的引用类型,作为形参传递不会影响实参的值. HashMap非线程安全,在多个线程访问Hashta ...
- ul+jquery自定义下拉选择框
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- Node 定时器详解
JavaScript 是单线程运行,异步操作特别重要. 只要用到引擎之外的功能,就需要跟外部交互,从而形成异步操作.由于异步操作实在太多,JavaScript 不得不提供很多异步语法.这就好比,有些人 ...
- Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver
1.错误描述 WARN:2015-05-01 13:26:10[localhost-startStop-1] - HHH000402: Using Hibernate built-in connect ...
- Flash Builder4.0新建Flex应用程序切换主题出错
1.错误描述 2.错误原因 <?xml version="1.0" encoding="utf-8"?> <s:Application xml ...
- 微软依赖注入Unity
Unity是一个依赖注入(Dependency Injection,DI)容器.DI的标准描述文章来自Martin Flower[0].作为一个快速的摘要,依赖注入容器就是一个用于构建高度松耦合的软件 ...
- cfDNA基本知识
定义 Circulating free DNA or Cell free DNA (cfDNA):循环游离DNA或者细胞游离DNA,释放到血浆中的降解的DNA片段. https://en.wikipe ...