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 sceneObjList = new List(); #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(_path); if (!_obj) { Debug.LogError("所要创建的资源不存在: " + _path); return null; } _obj = Instantiate(_obj); var _sceneObjData = _obj.AddComponent(); _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 } }