Boat Attack使用了Universal RP的许多新图形功能,可以用于探索 Universal RP 的使用方式和技巧。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

99 行
3.1 KiB

using System;
using UnityEngine;
using System.Collections;
using UnityEditor;
namespace BoatAttack
{
[CustomEditor(typeof(WaypointGroup))]
public class WaypointGroupEditor : Editor
{
private WaypointGroup WPGroup;
public override void OnInspectorGUI()
{
DrawDefaultInspector();
WaypointGroup WPG = (WaypointGroup)target;
if (GUILayout.Button("Drop Waypoint"))
{
WPG.CreateWaypoint();
}
if (GUILayout.Button("Delete Last Waypoint"))
{
WPG.DeleteLastWaypoint();
}
if (GUILayout.Button("Delete All Waypoints"))
{
WPG.DeleteAllWaypoints();
}
if (GUI.changed)
{
EditorUtility.SetDirty(target);
}
}
private void OnSceneGUI()
{
WPGroup = (WaypointGroup) target;
for (int i = 0; i < WPGroup.WPs.Count; i++)
{
WaypointGroup.Waypoint wp = WPGroup.WPs[i];
Handles.color = WPGroup.WaypointColour;
if (Tools.current == Tool.Move)
{
// Control handle
EditorGUI.BeginChangeCheck();
var pos = Handles.PositionHandle(wp.point, wp.rotation);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(WPGroup, "Moved Waypoint");
wp.point = pos;
}
}
else if (Tools.current == Tool.Rotate)
{
// Control handle
EditorGUI.BeginChangeCheck();
var rot = Handles.RotationHandle(wp.rotation, wp.point);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(WPGroup, "Rotated Waypoint");
wp.rotation = rot;
}
}
else if (Tools.current == Tool.Scale)
{
// Control handle
EditorGUI.BeginChangeCheck();
var scale = Handles.ScaleSlider(wp.WPwidth, wp.point, (wp.rotation * Vector3.right), wp.rotation, wp.WPwidth, 0.1f);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(WPGroup, "Scaled Waypoint");
wp.WPwidth = scale;
}
}
if (i != WPGroup.WPs.Count - 1)
{
if(i == 0 && WPGroup.reverse)
Handles.color = Color.red;
Handles.DrawDottedLine(wp.point, WPGroup.WPs[i + 1].point, 4f);
}
else
{
if (!WPGroup.reverse)
Handles.color = Color.red;
Handles.DrawDottedLine(wp.point, WPGroup.WPs[0].point, 4f);
}
}
}
}
}