Unity应用Handles画线,方便查看点间的路径
今天工作碰到一个实现NPC巡逻的功能需求,需要程序实现相关逻辑,并且能够让策划自由配置NPC巡逻路径和NPC交互功能。
这里我就想记录一下我利用Unity的Handles画线的功能实现路径可视化的一种方式吧。可能设计不是很好,欢迎各位大佬提出自己的建议。总之下面来看下这个拓展Unity编辑器功能的自制画线组件吧。先上个效果图:
我的设计是这样的:
Npcs下面存放NPC模型,NPC具体的操作这块,就先不在这边说了。
PointList下面存放地图上NPC巡逻的转折点。可以是地图上的一些岔路口,这样可以明确的告知Unity的Nav寻路AI在某个个路口向下一个路口移动,而不是完全依托Nav本身的功能来实现寻路,这样会有更高的路径确定性。
Paths下面存放策划配置的路径,这边也是需要我所用到的Handles画线工具的地方。可以看到我定义的这个组件非常简单只有三个变量空间:
- bool isShowLine=true;//表示是否需要显示线段
- Color lineColor;//自定义线条显示颜色
- List<Transform> Paths;//寻路路径转折点
有了这些信息后再有一个继承Editor的类来实现OnSceneGUI()函数就能实现点的连线了。依然是简单且实用。下面是代码:
/// <summary> 画线工具 </summary>
public class HandlesLineTool : MonoBehaviour
{public bool isShowLine = true;public Color lineColor = Color.white;public List<Transform> paths = new List<Transform>();
}
[CustomEditor(typeof(HandlesLineTool))]
public class HandlesLineEditor :Editor
{private Vector3[] positions;public void OnSceneGUI(){ HandlesLineTool handles = target as HandlesLineTool;if (!handles.isShowLine)return;Handles.color = handles.lineColor;if (handles.paths == null ){return;}if (handles.paths.Count > 0){positions = new Vector3[handles.paths.Count];}for (var i = 0; i < handles.paths.Count; i++){if(handles.paths[i]==null){continue;}positions[i] = handles.paths[i].position;}if(positions!=null && positions.Length>0)Handles.DrawPolyLine(positions);}
}
Unity应用Handles画线,方便查看点间的路径相关推荐
- Unity的Gizmos画线
Unity的Gizmos画线 1效果图 2.核心代码 3,亲测可行 加粗样式 4,注意事项这个Gizmos模式下画线,需要打开Unity的Scene和G ame视图中的Gizmos选项,因此在编辑器下 ...
- 【Unity】UI画线工具
[Unity]UI画线工具 最近恰好遇到在图片上画线标记路径的需求,需要动态地画很多线,感觉做帧动画的话美术工作量有点大,所以做了一个功能比较简单的UI画线工具 UIPathwaySystem : h ...
- Unity 几种画线方式
[前言] 图形化调试可以加速开发. 例如在战斗中,可能需要知道所有单位的仇恨值,如果这些信息全打log的话,很难有直观感受, 而如果在Scene窗口里,单位头顶有一个球,越红表示仇恨越高,越暗表示仇恨 ...
- Unity用Gizmos画线和图
Camera上挂runner.cs脚本,创建几个GameObject进行点的定位,赋值给runner的ts数组 runner中实现OnDrawGizmos方法,在其中用Gizmos进行绘制 //run ...
- unity LineRender用法——画线
1.创建一个空物体,加上LineRender组件 2.创建一个材质,用来渲染Line Shader "MyShader/RenderDepth" {Properties{_Colo ...
- Unity GL画线的坑
Unity中使用GL画线时注意一个问题,材质设置pass的代码应该放在GL.Color后面.类似下面这样: void RenderLine(DTGizmos gizmos) {if (!gizmos) ...
- Unity在Canvas上画线(Draw Line)实现
# 前言 目前Unity官方提供的UI扩展包中包含了UILineRenderer组件,本篇实现与UILineRenderer实现一致,主要讲解其基本使用与实现过程.不想看的同学可以直接下载官方扩展包. ...
- Unity实用案例之——屏幕画线和线框渲染
游戏里经常会遇到各种画线的需求,今天我们利用GL来实现其中的两个画线功能. 一.屏幕画线 屏幕画线是一种很好的用户交互方式,通过屏幕画线可以控制游戏中的各种元素,Unity提供了UnityEnige. ...
- Unity中在Game窗口画线
在Unity中画线有几种方式: Debug.DrawLine() 函数画线,在Game窗口不开启 Gizmos 时,只在Scene窗口显示,多用于调试. 通过 LineRenderer 来画线, ...
最新文章
- springframework包下的RequestContextHolder类和ServletRequestAttributes类的源码和使用
- JavaScript --- this
- a算法TSP旅行商java_A*算法实现旅行商问题(人工智能报告,付代码)
- c mysql数据库_C实现MySQL数据库操作
- 从小白到大数据人工智能专家的学习历程-送100G学习资料
- 微信开发(4) -- 推送微信模板信息到服务号
- reactNative之react-native-picker
- windows 弹出 api-ms-win-crt-runtime-l1-1-0.dll 丢失的问题
- jq 获取引入页面url_jQuery获取当前页面的URL信息
- Java高并发编程详解系列-Volatile关键字
- Paper--3d reconstruction:Photo Tourism: Exploring Photo Collections in 3D
- div+css静态网页设计 web网页设计实例作业 ——中国水墨风的小学学校网站(6页) 专题网页设计作业模板 学校物静态HTML网页模板下载
- 十三、注解(高琪java300集+java从入门到精通笔记)
- 姜小白的Python日记Day13 jason序列化与开发规范
- Ubuntu18.04下 LOAM_Velodyne 的编译安装(PCL为1.8.1)
- laravel 导出Excel,多维表头
- DES EBC模式前台加密JAVA后台解密
- 去掉系统启动时提示输入用户名及密码 ,Windows XP自动登录设置方法(转)
- linux inode使用率过高,解决inode占用过多
- selenium webdriver的testNG框架的介绍及使用
热门文章
- 企业管理软件,真的以业务流程为中心?
- 万恶的ie8 hack问题
- 基于ROCKCHIP的ubuntu-base根文件系统构建
- SSD硬盘安装win10 且安装千牛工作台频繁卡死问题解决过程
- grep -s 去掉 no such file or directory
- 计算机一级C类试题及答案,计算机一级c类试题(2)
- python使用requests爬取淘宝搜索页数据
- Collectors.joining()
- 1000多万淘宝卖家及23万天猫卖家,开始构建私域流量时代!
- 微信小程序超级占内存_实测:微信小程序究竟会占用多少内存?结果竟然