using UnityEngine; using System.Collections.Generic; #if UNITY_EDITOR using UnityEditor; #endif [RequireComponent(typeof(BoxCollider))] public class AreaTriggerView : MonoBehaviour { public int id; public BoxCollider boxCollider; public List eventList = new List(); } #if UNITY_EDITOR [CustomEditor(typeof(AreaTriggerView))] public class AreaTriggerViewEditor : Editor { private void OnEnable() { AreaTriggerView _target = target as AreaTriggerView; _target.boxCollider = _target.GetComponent(); } public override void OnInspectorGUI() { serializedObject.Update(); AreaTriggerView _target = target as AreaTriggerView; Transform _root = _target.transform; _target.id = EditorGUILayout.IntField("任务ID", _target.id); _target.name = string.Format("Area_{0}", _target.id); if (GUILayout.Button("矫正为屏幕中心点的坐标")) { SceneView _sceneView = SceneView.lastActiveSceneView; Camera _camera = _sceneView.camera; Vector3 _screenPosition = _camera.ViewportToScreenPoint(new Vector3(0.5f, 0.5f)); Ray _ray = _camera.ScreenPointToRay(_screenPosition); RaycastHit _raycastHit; if (Physics.Raycast(_ray, out _raycastHit, 10000, LayerUtility.WalkbleMask)) { _target.transform.position = _raycastHit.point; } } if (GUILayout.Button("新建刷怪数据")) { RefreshNPCView _refreshNPCView = SoMapView.GeneralRefreshNpcView(_root); _target.eventList.Add(_refreshNPCView); Selection.activeGameObject = _refreshNPCView.gameObject; } if (GUILayout.Button("新建障碍点数据")) { CreateImpasseView _createImpasseView = SoMapView.GeneralCreateImpasseView(_root); _target.eventList.Add(_createImpasseView); Selection.activeGameObject = _createImpasseView.gameObject; } if (GUI.changed) { EditorUtility.SetDirty(target); serializedObject.ApplyModifiedProperties(); } } } #endif