Unity 塔防自用可视化路点寻路编辑器
插件源码可见, 你能学到
- 可视化场景编辑器
- 贝塞尔路径设计
- Unity Editor扩展
- 更多扩展,可地形生成,地图笔刷
使用方法
设置地面
新建路径
寻路编辑器界面位置: Tools/Pathfinding Editor
按住Shift键 鼠标左键点击 新建路点, 按Delete键删除节点
控制点编辑
移动组件
数据以序列化的形式存储
高性能, 无额外的场景节点,不生成空节点
using UnityEngine;
using System;[System.Serializable]
public class Waypoint
{[Header( "基础设置" )][SerializeField] public Vector3 position;[SerializeField] public float radius = 1f;[SerializeField] public Color color = Color.white;[SerializeField] public string name;[Header( "贝塞尔控制点" )][SerializeField] public Vector3 forwardControlPoint; // 前向控制点[SerializeField] public Vector3 backwardControlPoint; // 后向控制点[SerializeField] public bool showControlPoints = true;[SerializeField] public bool autoCalculateControlPoints = true;[SerializeField] public float controlPointDistance = 2f; // 控制点距离public Waypoint( Vector3 pos, string waypointName = "" ){position = pos;name = string.IsNullOrEmpty( waypointName ) ? "Waypoint" : waypointName;// 初始化控制点forwardControlPoint = pos + Vector3.forward * controlPointDistance;backwardControlPoint = pos + Vector3.back * controlPointDistance;}// 获取世界坐标的前向控制点public Vector3 GetWorldForwardControlPoint( ){return position + forwardControlPoint;}// 获取世界坐标的后向控制点public Vector3 GetWorldBackwardControlPoint( ){return position + backwardControlPoint;}// 设置世界坐标的前向控制点public void SetWorldForwardControlPoint( Vector3 worldPos ){forwardControlPoint = worldPos - position;}// 设置世界坐标的后向控制点public void SetWorldBackwardControlPoint( Vector3 worldPos ){backwardControlPoint = worldPos - position;}// 自动计算控制点public void AutoCalculateControlPoints( Waypoint previousWaypoint, Waypoint nextWaypoint ){if ( !autoCalculateControlPoints ) return;Vector3 direction = Vector3.zero;if ( previousWaypoint != null && nextWaypoint != null ){// 中间点:使用前后路点的方向direction = ( nextWaypoint.position - previousWaypoint.position ).normalized;}else if ( nextWaypoint != null ){// 起始点:使用到下一个点的方向direction = ( nextWaypoint.position - position ).normalized;}else if ( previousWaypoint != null ){// 结束点:使用从上一个点的方向direction = ( position - previousWaypoint.position ).normalized;}forwardControlPoint = direction * controlPointDistance;backwardControlPoint = -direction * controlPointDistance;}
}[System.Serializable]
public class PathData
{[SerializeField] public string pathName = "New Path";[SerializeField] public Waypoint[] waypoints = new Waypoint[ 0 ];[SerializeField] public bool useBezierSmoothing = true;[SerializeField] public int bezierResolution = 20;[SerializeField] public Color pathColor = Color.yellow;[SerializeField] public float pathWidth = 0.1f;[Header( "控制点设置" )][SerializeField] public bool showAllControlPoints = true;[SerializeField] public Color controlPointColor = Color.cyan;[SerializeField] public Color controlLineColor = Color.gray;[SerializeField] public float controlPointSize = 0.3f;
}
工具下载
CSDN下载链接
视频地址
Unity 塔防可视化路点编辑器 - 运行时高性能 无额外渲染节点 纯数据处理