You've already forked taptap2024_GJ_chidouren
90 lines
2.6 KiB
C#
90 lines
2.6 KiB
C#
using System.Collections.Generic;
|
||
using Sirenix.OdinInspector;
|
||
using UnityEngine;
|
||
|
||
namespace Game.Component.Map
|
||
{
|
||
public class MovePathGroup : MonoBehaviour
|
||
{
|
||
private List<Vector3> _pathList;
|
||
|
||
#if UNITY_EDITOR
|
||
|
||
public List<Transform> PathList;
|
||
|
||
private void OnDrawGizmos ()
|
||
{
|
||
if (PathList == null)
|
||
{
|
||
return;
|
||
}
|
||
//根据PathList绘制节点,并按照顺序连接线段
|
||
for (int i = PathList.Count - 1; i >= 0 ; i--)
|
||
{
|
||
if (PathList[i] == null)
|
||
{
|
||
PathList.RemoveAt (i);
|
||
continue;
|
||
}
|
||
//每个节点绘制一个园
|
||
Gizmos.color = Color.red;
|
||
Gizmos.DrawWireSphere (PathList[i].position, 0.1f);
|
||
if (this.PathList.Count > 1)
|
||
{
|
||
if (i < PathList.Count - 1)
|
||
{
|
||
Gizmos.color = Color.green;
|
||
Gizmos.DrawLine (PathList[i].position, PathList[i + 1].position);
|
||
}
|
||
else
|
||
{
|
||
Gizmos.color = Color.green;
|
||
Gizmos.DrawLine (PathList[i].position, PathList[0].position);
|
||
}
|
||
}
|
||
}
|
||
|
||
UpdateNodeVector ();
|
||
}
|
||
|
||
[Button ("刷新路径")]
|
||
private void RefreshPath ()
|
||
{
|
||
this.PathList.Clear ();
|
||
for (int i = 0; i < transform.childCount; i++)
|
||
{
|
||
this.PathList.Add (transform.GetChild (i));
|
||
}
|
||
UpdateNodeVector ();
|
||
}
|
||
|
||
private void UpdateNodeVector ()
|
||
{
|
||
this._pathList = new List<Vector3>();
|
||
foreach (Transform t in PathList)
|
||
{
|
||
_pathList.Add (t.position);
|
||
}
|
||
}
|
||
|
||
[Button ("添加路径节点")]
|
||
private void AddPathNode ()
|
||
{
|
||
//创建一个空的游戏对象(编辑器中)
|
||
GameObject go = new GameObject ("PathNode");
|
||
UnityEditor.Selection.activeGameObject = go;
|
||
if (PathList != null && PathList.Count > 0)
|
||
{
|
||
go.transform.position = PathList[PathList.Count - 1].position + Vector3.up;
|
||
}
|
||
else
|
||
{
|
||
go.transform.position = transform.position;
|
||
}
|
||
go.transform.SetParent (this.transform);
|
||
PathList.Add (go.transform);
|
||
UpdateNodeVector ();
|
||
}
|
||
#endif
|
||
}
|
||
} |