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 ...
随机推荐
- mysql无法启动的结果问题解决
mac 上homebrew 安装的mysql,已经用了很长时间都没什么问题,今天 ERROR! The server quit without updating PID file (/usr/loca ...
- 将DataSet转化成XML格式的String类型,再转化回来。
/// <summary> /// 获取DataSet的Xml格式 /// </summary> public static string GetDataSetXml(this ...
- SMJobBless官方Demo笔记
SMJobBless是苹果官方提供的用于"MacOS app获取root权限"的demo. 具体思路 使用Security.framework和ServiceManagement. ...
- Linux定时器 timerfd使用
英文使用手册原汁原味,一手资料. NAME timerfd_create, timerfd_settime, timerfd_gettime - timers that notify vi ...
- R语言与格式、日期格式、格式转化
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言的基础包中提供了两种类型的时间数据,一类 ...
- 解决MyEclipse中的Building workspace问题
解决MyEclipse中的Building workspace问题 1.方法一 点击"Project",取消勾选"Build Automatically" 2. ...
- web开发性能优化---安全篇
1.权限管理 从模块.表单.数据审核.功能按钮全面数据安全验证及管理. 2.ip验证 数据接口访问进行IP校验 3.登录.操作日志.程序安全日志 系统所有用户登录.操作全部日志记录. 程序安全日志操 ...
- JavaScript的几种常见的创建方式
1.通过Object构造函数或者对象字面量创建单个对象 使用字面量方法创建对象:var stut = {name: "张三"}; 使用内置构造函数创建对象:var stu = ne ...
- pat1101-1110
1101 #include<cmath> #include<map> #include<iostream> #include<cstring> #inc ...
- 新的一年新的变化!IT的大变天
今天是一个特别的日子,祝女神朋友们,节日快乐,早点下班! 新的一年,大家又忙碌在加班加点的堆代码中,bug的陪伴使我快乐使我忧伤,想想想,也奋斗了五六百的岁月,实习期向往大城市的公司,梦想着有一天与自 ...