| | |
| | | newSceneObjResName = EditorGUILayout.TextField(newSceneObjResName, guiSkin.textField, GUILayout.Width(100), GUILayout.Height(20)); |
| | | if (GUILayout.Button("添加", guiSkin.button, GUILayout.Width(60), GUILayout.Height(22))) |
| | | { |
| | | var _go = new GameObject("RefreshSceneObj"); |
| | | _go.transform.SetParent(transform); |
| | | RaycastHit _hit; |
| | | Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0)); |
| | | if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask)) |
| | | Debug.Log("!!!"); |
| | | var _sceneObject = CreateSceneObject(); |
| | | if (_sceneObject) |
| | | { |
| | | _go.transform.position = _hit.point; |
| | | sceneObjList.Add(_sceneObject); |
| | | showSceneObjList = true; |
| | | } |
| | | _go.transform.eulerAngles = Vector3.zero; |
| | | _go.transform.localScale = Vector3.one; |
| | | |
| | | var _sceneObject = _go.AddComponent<Bhv_SceneObjectData>(); |
| | | sceneObjList.Add(_sceneObject); |
| | | |
| | | showSceneObjList = true; |
| | | } |
| | | EditorGUILayout.EndHorizontal(); |
| | | |
| | |
| | | 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 |
| | | |
| | | } |