From 38bbe9af958cac89c56b35ee6c7ba5b2ed44185c Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期一, 21 一月 2019 21:34:33 +0800
Subject: [PATCH] 382 地图编辑器逻辑提交
---
Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs | 79 ++++++++++++++++++++++++++++++++++++---
1 files changed, 73 insertions(+), 6 deletions(-)
diff --git a/Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs b/Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
index 21ef2bf..5f26db0 100644
--- a/Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
+++ b/Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
@@ -20,6 +20,41 @@
[HideInInspector]
private string newSceneObjResName = "";
+ public override void Save(BinaryWriter bw)
+ {
+ base.Save(bw);
+ bw.Write(sceneObjList.Count);
+ foreach (var _sceneObject in sceneObjList)
+ {
+ _sceneObject.Save(bw);
+ }
+ }
+
+ public override void Export(BinaryWriter bw)
+ {
+ base.Export(bw);
+ bw.Write(sceneObjList.Count);
+ foreach (var _sceneObject in sceneObjList)
+ {
+ _sceneObject.Export(bw);
+ }
+ }
+
+ public override void Load(BinaryReader br)
+ {
+ base.Load(br);
+ int _count = br.ReadInt32();
+ for (int i = 0; i < _count; ++i)
+ {
+ string _resName = br.ReadString();
+ var _sceneData = CreateSceneObject(_resName);
+ _sceneData.transform.SetParent(transform);
+ _sceneData.Load(br);
+
+ sceneObjList.Add(_sceneData);
+ }
+ }
+
public override bool DrawUI(GUISkin guiSkin)
{
bool _result = false;
@@ -58,8 +93,7 @@
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();
+ var _sceneObject = CreateSceneObject(newSceneObjResName);
if (_sceneObject)
{
sceneObjList.Add(_sceneObject);
@@ -70,7 +104,40 @@
if (showSceneObjList)
{
+ for (int i = sceneObjList.Count - 1; i >= 0; --i)
+ {
+ EditorGUILayout.BeginHorizontal(GUILayout.Height(22));
+ EditorGUILayout.LabelField(string.Format("{0}. ResName", (i + 1)), guiSkin.customStyles[0], GUILayout.Height(22), GUILayout.Width(80));
+ var _npcID = sceneObjList[i].resName;
+ EditorGUILayout.TextField(sceneObjList[i].resName, guiSkin.textField, GUILayout.Height(20));
+ sceneObjList[i].isObstacle = GUILayout.Toggle(sceneObjList[i].isObstacle, "闅滅", guiSkin.button, GUILayout.Width(50), GUILayout.Height(20));
+ if (GUILayout.Button("瀹氶珮", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
+ {
+ Vector3 _pos = sceneObjList[i].transform.position;
+ _pos.y = 0;
+ RaycastHit _hit;
+ Ray _ray = new Ray(_pos + Vector3.up * 100, Vector3.down);
+ if (Physics.Raycast(_ray, out _hit, 200, LayerUtility.WalkbleMask))
+ {
+ sceneObjList[i].transform.position = _hit.point;
+ }
+ }
+ if (GUILayout.Button("鏌ユ壘", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
+ {
+ Selection.activeGameObject = sceneObjList[i].gameObject;
+ if (Selection.activeGameObject)
+ {
+ SceneView.lastActiveSceneView.LookAt(Selection.activeGameObject.transform.position);
+ }
+ }
+ if (GUILayout.Button("鍒犻櫎", guiSkin.button, GUILayout.Width(60), GUILayout.Height(20)))
+ {
+ DestroyImmediate(sceneObjList[i].gameObject);
+ sceneObjList.RemoveAt(i);
+ }
+ EditorGUILayout.EndHorizontal();
+ }
}
EditorGUILayout.EndVertical();
}
@@ -80,11 +147,11 @@
return _result;
}
- private Bhv_SceneObjectData CreateSceneObject()
+ private Bhv_SceneObjectData CreateSceneObject(string sceneName = null)
{
- if (!string.IsNullOrEmpty(newSceneObjResName))
+ if (!string.IsNullOrEmpty(sceneName))
{
- string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + newSceneObjResName + ".prefab";
+ string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + sceneName + ".prefab";
var _obj = AssetDatabase.LoadAssetAtPath<GameObject>(_path);
if (!_obj)
{
@@ -93,7 +160,7 @@
}
_obj = Instantiate(_obj);
var _sceneObjData = _obj.AddComponent<Bhv_SceneObjectData>();
- _sceneObjData.resName = newSceneObjResName;
+ _sceneObjData.resName = sceneName;
RaycastHit _hit;
Ray _ray = SceneView.lastActiveSceneView.camera.ViewportPointToRay(new Vector3(.5f, .5f, 0));
if (Physics.Raycast(_ray, out _hit, 1000f, LayerUtility.WalkbleMask))
--
Gitblit v1.8.0