少年修仙传客户端代码仓库
lcy
2024-12-16 a39c35fc6449430cd02bccb681c4a0a880e46cd9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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<MapEventView> eventList = new List<MapEventView>();
}
 
#if UNITY_EDITOR
[CustomEditor(typeof(AreaTriggerView))]
public class AreaTriggerViewEditor : Editor
{
    private void OnEnable()
    {
        AreaTriggerView _target = target as AreaTriggerView;
        _target.boxCollider = _target.GetComponent<BoxCollider>();
    }
 
    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