using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif [RequireComponent(typeof(BoxCollider))] public class CreateImpasseView : MapEventView { public int id; public BoxCollider boxCollider; public int effectID = -1; } #if UNITY_EDITOR [CustomEditor(typeof(CreateImpasseView))] public class CreateImpasseViewEditor : Editor { private void OnEnable() { CreateImpasseView _target = target as CreateImpasseView; _target.boxCollider = _target.GetComponent(); } public override void OnInspectorGUI() { serializedObject.Update(); CreateImpasseView _target = target as CreateImpasseView; _target.id = EditorGUILayout.IntField("障碍点ID", _target.id); _target.name = string.Format("Impasse: {0}", _target.id); _target.effectID = EditorGUILayout.IntField("特效ID", _target.effectID); 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 (GUI.changed) { EditorUtility.SetDirty(target); serializedObject.ApplyModifiedProperties(); } } } #endif