今天工作碰到一个实现NPC巡逻的功能需求,需要程序实现相关逻辑,并且能够让策划自由配置NPC巡逻路径和NPC交互功能。

这里我就想记录一下我利用Unity的Handles画线的功能实现路径可视化的一种方式吧。可能设计不是很好,欢迎各位大佬提出自己的建议。总之下面来看下这个拓展Unity编辑器功能的自制画线组件吧。先上个效果图:

我的设计是这样的:

Npcs下面存放NPC模型,NPC具体的操作这块,就先不在这边说了。

PointList下面存放地图上NPC巡逻的转折点。可以是地图上的一些岔路口,这样可以明确的告知Unity的Nav寻路AI在某个个路口向下一个路口移动,而不是完全依托Nav本身的功能来实现寻路,这样会有更高的路径确定性。

Paths下面存放策划配置的路径,这边也是需要我所用到的Handles画线工具的地方。可以看到我定义的这个组件非常简单只有三个变量空间:

  1. bool isShowLine=true;//表示是否需要显示线段
  2. Color lineColor;//自定义线条显示颜色
  3. 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画线,方便查看点间的路径相关推荐

  1. Unity的Gizmos画线

    Unity的Gizmos画线 1效果图 2.核心代码 3,亲测可行 加粗样式 4,注意事项这个Gizmos模式下画线,需要打开Unity的Scene和G ame视图中的Gizmos选项,因此在编辑器下 ...

  2. 【Unity】UI画线工具

    [Unity]UI画线工具 最近恰好遇到在图片上画线标记路径的需求,需要动态地画很多线,感觉做帧动画的话美术工作量有点大,所以做了一个功能比较简单的UI画线工具 UIPathwaySystem : h ...

  3. Unity 几种画线方式

    [前言] 图形化调试可以加速开发. 例如在战斗中,可能需要知道所有单位的仇恨值,如果这些信息全打log的话,很难有直观感受, 而如果在Scene窗口里,单位头顶有一个球,越红表示仇恨越高,越暗表示仇恨 ...

  4. Unity用Gizmos画线和图

    Camera上挂runner.cs脚本,创建几个GameObject进行点的定位,赋值给runner的ts数组 runner中实现OnDrawGizmos方法,在其中用Gizmos进行绘制 //run ...

  5. unity LineRender用法——画线

    1.创建一个空物体,加上LineRender组件 2.创建一个材质,用来渲染Line Shader "MyShader/RenderDepth" {Properties{_Colo ...

  6. Unity GL画线的坑

    Unity中使用GL画线时注意一个问题,材质设置pass的代码应该放在GL.Color后面.类似下面这样: void RenderLine(DTGizmos gizmos) {if (!gizmos) ...

  7. Unity在Canvas上画线(Draw Line)实现

    # 前言 目前Unity官方提供的UI扩展包中包含了UILineRenderer组件,本篇实现与UILineRenderer实现一致,主要讲解其基本使用与实现过程.不想看的同学可以直接下载官方扩展包. ...

  8. Unity实用案例之——屏幕画线和线框渲染

    游戏里经常会遇到各种画线的需求,今天我们利用GL来实现其中的两个画线功能. 一.屏幕画线 屏幕画线是一种很好的用户交互方式,通过屏幕画线可以控制游戏中的各种元素,Unity提供了UnityEnige. ...

  9. Unity中在Game窗口画线

    在Unity中画线有几种方式: Debug.DrawLine()  函数画线,在Game窗口不开启 Gizmos 时,只在Scene窗口显示,多用于调试. 通过  LineRenderer  来画线, ...

最新文章

  1. springframework包下的RequestContextHolder类和ServletRequestAttributes类的源码和使用
  2. JavaScript --- this
  3. a算法TSP旅行商java_A*算法实现旅行商问题(人工智能报告,付代码)
  4. c mysql数据库_C实现MySQL数据库操作
  5. 从小白到大数据人工智能专家的学习历程-送100G学习资料
  6. 微信开发(4) -- 推送微信模板信息到服务号
  7. reactNative之react-native-picker
  8. windows 弹出 api-ms-win-crt-runtime-l1-1-0.dll 丢失的问题
  9. jq 获取引入页面url_jQuery获取当前页面的URL信息
  10. Java高并发编程详解系列-Volatile关键字
  11. Paper--3d reconstruction:Photo Tourism: Exploring Photo Collections in 3D
  12. div+css静态网页设计 web网页设计实例作业 ——中国水墨风的小学学校网站(6页) 专题网页设计作业模板 学校物静态HTML网页模板下载
  13. 十三、注解(高琪java300集+java从入门到精通笔记)
  14. 姜小白的Python日记Day13 jason序列化与开发规范
  15. Ubuntu18.04下 LOAM_Velodyne 的编译安装(PCL为1.8.1)
  16. laravel 导出Excel,多维表头
  17. DES EBC模式前台加密JAVA后台解密
  18. 去掉系统启动时提示输入用户名及密码 ,Windows XP自动登录设置方法(转)
  19. linux inode使用率过高,解决inode占用过多
  20. selenium webdriver的testNG框架的介绍及使用

热门文章

  1. 企业管理软件,真的以业务流程为中心?
  2. 万恶的ie8 hack问题
  3. 基于ROCKCHIP的ubuntu-base根文件系统构建
  4. SSD硬盘安装win10 且安装千牛工作台频繁卡死问题解决过程
  5. grep -s 去掉 no such file or directory
  6. 计算机一级C类试题及答案,计算机一级c类试题(2)
  7. python使用requests爬取淘宝搜索页数据
  8. Collectors.joining()
  9. 1000多万淘宝卖家及23万天猫卖家,开始构建私域流量时代!
  10. 微信小程序超级占内存_实测:微信小程序究竟会占用多少内存?结果竟然