using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System; //using System.Numerics; [CustomEditor(typeof(UAVManager))] public class UAVManagerEitor : Editor { UAVManager _tar; SerializedProperty UAVParent; SerializedProperty wall_layer; SerializedProperty array_light_json_data; SerializedProperty array_position_json_data; SerializedProperty array_position_json_data2; string color_value; float color_intensity; private void OnEnable() { _tar = (UAVManager)target; wall_layer = serializedObject.FindProperty("ColliderLayer"); UAVParent = serializedObject.FindProperty("uav_parent"); array_light_json_data = serializedObject.FindProperty("array_light_json_data"); array_position_json_data = serializedObject.FindProperty("array_position_json_data"); array_position_json_data2 = serializedObject.FindProperty("array_position_json_data2"); } private bool use_night, _use_night; private bool environment_foldout; public override void OnInspectorGUI() { //serializedObject.Update(); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUI.indentLevel++; environment_foldout = EditorGUILayout.Foldout(environment_foldout, new GUIContent("环境")); EditorGUI.indentLevel--; if (environment_foldout) { _tar.trail_material = EditorGUILayout.ObjectField("轨迹材质", _tar.trail_material, typeof(Material), true) as Material; _tar.day_skybox = EditorGUILayout.ObjectField("白天天空盒", _tar.day_skybox, typeof(Material), true) as Material; _tar.night_skybox = EditorGUILayout.ObjectField("夜晚天空盒", _tar.night_skybox, typeof(Material), true) as Material; _tar.direction_light = EditorGUILayout.ObjectField("灯光", _tar.direction_light, typeof(Light), true) as Light; _tar.night_environment = EditorGUILayout.ObjectField("夜景物体", _tar.night_environment, typeof(GameObject), true) as GameObject; use_night = GUILayout.Toggle(use_night, new GUIContent("是否启用夜景")); if (_use_night != use_night) { _use_night = use_night; _tar.SwitchEnvironmentTime(use_night); } _tar.useGlobalPosition = GUILayout.Toggle(_tar.useGlobalPosition, new GUIContent("是否使用绝对坐标")); } EditorGUILayout.EndVertical(); //_tar.useGlobalPosition = GUILayout.Toggle(_tar.useGlobalPosition, new GUIContent("是否使用绝对坐标")); EditorGUILayout.PropertyField(UAVParent); EditorGUILayout.BeginHorizontal(); _tar.pos = EditorGUILayout.Vector3Field("", _tar.pos); if (GUILayout.Button("创建无人机")) { _tar.CreateNewUAV(_tar.pos);//编辑测试 } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); _tar.size = EditorGUILayout.Vector2Field("", _tar.size); if (GUILayout.Button("创建无人机阵列")) { _tar.CreateUavArray(_tar.size); } _tar.create_distance = EditorGUILayout.FloatField(new GUIContent("", "创建无人机间隔"), _tar.create_distance); EditorGUILayout.EndHorizontal(); Space(5); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("启动所有无人机")) { _tar.StartAll(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("关闭所有无人机")) { _tar.ShutdownAll(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); _tar.quat = EditorGUILayout.Vector4Field("", _tar.quat); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("设置所有无人机旋翼速度")) { _tar.UpdateAllSpeed(_tar.quat); } EditorGUILayout.EndHorizontal(); Space(5); EditorGUILayout.BeginHorizontal(); _tar.all_uav = EditorGUILayout.ToggleLeft("控制所有无人机", _tar.all_uav, GUILayout.Width(120), GUILayout.ExpandWidth(false)); if (!_tar.all_uav) { _tar.uav_index = EditorGUILayout.IntField("", _tar.uav_index, GUILayout.Width(40), GUILayout.ExpandWidth(false)); EditorGUILayout.LabelField("无人机编号", GUILayout.Width(80), GUILayout.ExpandWidth(false)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("左转")) { _tar.UpdateAllSpeed(new Vector4(4, 6, 6, 4)); } if (GUILayout.Button("停止")) { _tar.UpdateAllSpeed(new Vector4(5, 5, 5, 5)); } if (GUILayout.Button("右转")) { _tar.UpdateAllSpeed(new Vector4(6, 4, 4, 6)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("前进")) { _tar.UpdateAllSpeed(new Vector4(4, 4, 6, 6)); } if (GUILayout.Button("停止")) { _tar.UpdateAllSpeed(new Vector4(5, 5, 5, 5)); } if (GUILayout.Button("后退")) { _tar.UpdateAllSpeed(new Vector4(6, 6, 4, 4)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("左移")) { _tar.UpdateAllSpeed(new Vector4(4, 6, 4, 6)); } if (GUILayout.Button("停止")) { _tar.UpdateAllSpeed(new Vector4(5, 5, 5, 5)); } if (GUILayout.Button("右移")) { _tar.UpdateAllSpeed(new Vector4(6, 4, 6, 4)); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("上升")) { _tar.UpdateAllSpeed(new Vector4(6, 6, 6, 6)); } if (GUILayout.Button("停止")) { _tar.UpdateAllSpeed(new Vector4(5, 5, 5, 5)); } if (GUILayout.Button("下降")) { _tar.UpdateAllSpeed(new Vector4(4, 4, 4, 4)); } EditorGUILayout.EndHorizontal(); Space(5); _tar.tar_pos = EditorGUILayout.Vector3Field("", _tar.tar_pos); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("固定速度", GUILayout.Width(40), GUILayout.ExpandWidth(true)); _tar.fly_speed = EditorGUILayout.FloatField("", _tar.fly_speed, GUILayout.Width(40), GUILayout.ExpandWidth(false)); if (GUILayout.Button("飞至指定位置")) { _tar.Fly2TargetBySpeed(_tar.tar_pos, _tar.uav_index, _tar.fly_speed); } EditorGUILayout.LabelField("固定时间", GUILayout.Width(40), GUILayout.ExpandWidth(true)); _tar.fly_time = EditorGUILayout.FloatField("", _tar.fly_time, GUILayout.Width(40), GUILayout.ExpandWidth(false)); if (GUILayout.Button("飞至指定位置")) { _tar.Fly2TargetByTime(_tar.tar_pos, _tar.uav_index, _tar.fly_time); } EditorGUILayout.EndHorizontal(); Space(5); EditorGUILayout.BeginHorizontal(); _tar.rise_modify = EditorGUILayout.FloatField(_tar.rise_modify); if (GUILayout.Button("上升速度修正")) { _tar.SetAllRiseModify(_tar.rise_modify); } _tar.descend_modify = EditorGUILayout.FloatField(_tar.descend_modify); if (GUILayout.Button("下降速度修正")) { _tar.SetAllDescendModify(_tar.descend_modify); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); _tar.move_modify = EditorGUILayout.FloatField(_tar.move_modify); if (GUILayout.Button("移动速度修正")) { _tar.SetAllMoveModify(_tar.move_modify); } _tar.rotate_modify = EditorGUILayout.FloatField(_tar.rotate_modify); if (GUILayout.Button("旋转速度修正")) { _tar.SetAllRotateModify(_tar.rotate_modify); } EditorGUILayout.EndHorizontal(); if (GUILayout.Button("所有速度修正")) { _tar.SetAllRiseModify(_tar.rise_modify); _tar.SetAllDescendModify(_tar.descend_modify); _tar.SetAllMoveModify(_tar.move_modify); _tar.SetAllRotateModify(_tar.rotate_modify); } Space(5); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("重置所有无人机")) { _tar.ResetAll(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("清空所有无人机")) { _tar.ClearAllUavs(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.PropertyField(wall_layer); _tar.uav_index_json_data = EditorGUILayout.TextField(_tar.uav_index_json_data); if (GUILayout.Button("无人机矩阵飞行")) { _tar.UavTimeDataHandle(); } //if (Application.isPlaying && _tar.UAVControllers != null && _tar.UAVControllers.Count > 0) // _tar.UAVControllers[0].ForceMode = (ForceMode)EditorGUILayout.EnumFlagsField(_tar.UAVControllers[0].ForceMode); EditorGUILayout.EndVertical(); color_value = EditorGUILayout.TextField(color_value); color_intensity = EditorGUILayout.FloatField(color_intensity); if (GUILayout.Button("打开/更新无人机灯光")) { _tar.uav_simulator[0].OpenLighter(color_value, color_intensity); } if (GUILayout.Button("关闭无人机灯光")) { _tar.uav_simulator[0].CloseLighter(); } //serializedObject.ApplyModifiedProperties(); if (GUI.changed) { base.serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty((UnityEngine.Object)(object)_tar); EditorUtility.SetDirty(((Component)(object)_tar).gameObject); } //base.OnInspectorGUI(); } void Space(float pixels) { GUILayout.Space(pixels); } }