Files
tianrunCRM/Assets/CoolapeFrame/AIPath/Editor/ECLSeekerInspector.cs
2020-07-04 14:41:25 +08:00

91 lines
4.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using Coolape;
[CanEditMultipleObjects]
[CustomEditor(typeof(CLSeeker), true)]
public class ECLSeekerInspector : Editor
{
CLSeeker instance;
public override void OnInspectorGUI()
{
instance = target as CLSeeker;
//DrawDefaultInspector();
ECLEditorUtl.BeginContents();
{
EditorGUILayout.HelpBox(
"配合A星使用的seeker。\n" +
"主要方法:\n" +
" .init();//初始化回调:寻路完成的回调,移动过程中的回调,到达目的地的回调\n" +
" .seek();//寻路完成后会调用在init里设置的回调函数第一个参数是路径第二个参数为能否到达目的地\n" +
" .seekTarget();//寻路,会定时重新寻目标对象的路径\n" +
" .cancelSeekTarget();//取消对目标对象的定时寻路\n" +
" .startMove();//开始移动只能通过此方法不能直接改变canMove变量\n" +
" .stopMove();//停止移动\n"
, MessageType.None, true);
}
ECLEditorUtl.EndContents();
ECLEditorUtl.BeginContents();
{
GUI.color = Color.yellow;
GUILayout.Label("*鼠标悬停在字段上有解释");
GUI.color = Color.white;
GUIContent uicontnt = null;
uicontnt = new GUIContent("AStar Instance", "A星寻路实例,如果不设值在运行时自动使用CLAStarPathSearch.current");
instance.mAStarPathSearch = (CLAStarPathSearch)EditorGUILayout.ObjectField(uicontnt, instance.mAStarPathSearch, typeof(CLAStarPathSearch));
uicontnt = new GUIContent("Target", "目标对象");
instance.target = (Transform)EditorGUILayout.ObjectField(uicontnt, instance.target, typeof(Transform));
uicontnt = new GUIContent("Move Speed", "移动速度");
instance.speed = EditorGUILayout.FloatField(uicontnt, instance.speed);
uicontnt = new GUIContent("Turning Speed", "转动速度【注意】当为负数时表示立即转到目标方向大于0时则会慢慢转向目标方向");
instance.turningSpeed = EditorGUILayout.FloatField(uicontnt, instance.turningSpeed);
uicontnt = new GUIContent("EndReached Distance", "离目标到一定距离后结束移动");
instance.endReachedDistance = EditorGUILayout.FloatField(uicontnt, instance.endReachedDistance);
uicontnt = new GUIContent("Auto Move After Seek", "当寻路完成后就移动过去");
instance.autoMoveOnFinishSeek = EditorGUILayout.Toggle(uicontnt, instance.autoMoveOnFinishSeek);
uicontnt = new GUIContent("Moving By", "能哪种update移动");
instance.movingBy = (CLSeeker.MovingBy)EditorGUILayout.EnumPopup(uicontnt, instance.movingBy);
uicontnt = new GUIContent("Moving Unscaled Time", "移动时忽略时间的缩放");
instance.unscaledTime = EditorGUILayout.Toggle(uicontnt, instance.unscaledTime);
uicontnt = new GUIContent("is Moving", "正在移动");
EditorGUILayout.Toggle(uicontnt, instance.canMove);
uicontnt = new GUIContent("Debug Show Path", "显示路径");
instance.showPath = EditorGUILayout.Toggle(uicontnt, instance.showPath);
}
ECLEditorUtl.EndContents();
ECLEditorUtl.BeginContents();
{
if (GUILayout.Button("Search"))
{
instance.seek(instance.target.position);
}
if (GUILayout.Button("SearchTarget"))
{
instance.seekTarget(instance.target);
}
if (GUILayout.Button("Cancel SearchTarget"))
{
instance.cancelSeekTarget();
}
if (GUILayout.Button("Begain Move"))
{
instance.startMove();
}
if (GUILayout.Button("Stop Move"))
{
instance.stopMove();
}
}
ECLEditorUtl.EndContents();
EditorUtility.SetDirty(target);
}
}