少年修仙传客户端代码仓库
client_Wu Xijin
2019-01-19 bc8ab62645f726da15c2252b65b68b374191cf2c
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System.Collections.Generic;
using UnityEngine;
using System.IO;
 
#if UNITY_EDITOR
using UnityEditor;
#endif
 
namespace H2Engine
{
    public class Bhv_Evt_RefreshSceneObject : Bhv_Evt
    {
        [HideInInspector]
        public List<Bhv_SceneObjectData> sceneObjList = new List<Bhv_SceneObjectData>();
 
#if UNITY_EDITOR
 
        [HideInInspector]
        private bool showSceneObjList = false;
        [HideInInspector]
        private string newSceneObjResName = "";
 
        public override bool DrawUI(GUISkin guiSkin)
        {
            bool _result = false;
            EditorGUILayout.BeginVertical(guiSkin.box);
            EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
            EditorGUI.indentLevel += 1;
            showDetail = EditorGUILayout.Foldout(showDetail, "  ID:" + id + " | Type: " + type, true, guiSkin.customStyles[3]);
            if (GUILayout.Button("定位", guiSkin.button, GUILayout.Width(60), GUILayout.Height(22)))
            {
                Selection.activeGameObject = gameObject;
                if (Selection.activeGameObject)
                {
                    SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
                }
            }
            if (GUILayout.Button("删除", guiSkin.button, GUILayout.Width(60), GUILayout.Height(22)))
            {
                _result = true;
            }
            EditorGUILayout.EndHorizontal();
 
            if (showDetail)
            {
                EditorGUILayout.BeginVertical(guiSkin.customStyles[1]);
                EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
                if (sceneObjList.Count > 0)
                {
                    showSceneObjList = EditorGUILayout.Foldout(showSceneObjList, "  场景物件列表", true, guiSkin.customStyles[3]);
                }
                else
                {
                    EditorGUILayout.LabelField("  场景物件列表:", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(100));
                    GUILayout.FlexibleSpace();
                }
                EditorGUILayout.LabelField("ResName:", guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(60));
                newSceneObjResName = EditorGUILayout.TextField(newSceneObjResName, guiSkin.textField, GUILayout.Width(100), GUILayout.Height(20));
                if (GUILayout.Button("添加", guiSkin.button, GUILayout.Width(60), GUILayout.Height(22)))
                {
                    Debug.Log("!!!");
                    var _sceneObject = CreateSceneObject();
                    if (_sceneObject)
                    {
                        sceneObjList.Add(_sceneObject);
                        showSceneObjList = true;
                    }
                }
                EditorGUILayout.EndHorizontal();
 
                if (showSceneObjList)
                {
 
                }
                EditorGUILayout.EndVertical();
            }
 
            EditorGUI.indentLevel -= 1;
            EditorGUILayout.EndVertical();
            return _result;
        }
 
        private Bhv_SceneObjectData CreateSceneObject()
        {
            if (!string.IsNullOrEmpty(newSceneObjResName))
            {
                string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + newSceneObjResName + ".prefab";
                var _obj = AssetDatabase.LoadAssetAtPath<GameObject>(_path);
                if (!_obj)
                {
                    Debug.LogError("所要创建的资源不存在: " + _path);
                    return null;
                }
                _obj = Instantiate(_obj);
                var _sceneObjData = _obj.AddComponent<Bhv_SceneObjectData>();
                _sceneObjData.resName = newSceneObjResName;
                RaycastHit _hit;
                Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0));
                if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask))
                {
                    _sceneObjData.transform.position = _hit.point;
                }
                _sceneObjData.transform.SetParent(transform);
                _sceneObjData.transform.eulerAngles = Vector3.zero;
                _sceneObjData.transform.localScale = Vector3.one;
 
                Selection.activeGameObject = _sceneObjData.gameObject;
                if (Selection.activeGameObject)
                {
                    SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
                }
 
                return _sceneObjData;
            }
            return null;
        }
#endif
 
    }
}