| Core/MapEditor/Behavior/Bhv_Evt.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/MapEditor/Behavior/Bhv_MapData.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/MapEditor/Behavior/Bhv_MapTrigger.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/MapEditor/Behavior/Bhv_MonsterData.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/MapEditor/Behavior/Bhv_SceneObjectData.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| Core/MapEditor/Editor/MapEditor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/MapEditor/Behavior/Bhv_Evt.cs
@@ -31,6 +31,9 @@ bw.Write((float)System.Math.Round(transform.position.z, 2)); } public abstract void SaveJson(System.Text.StringBuilder stringBuilder); public abstract void LoadJson(LitJson.JsonData json); public virtual void Load(BinaryReader br) { id = br.ReadInt32(); Core/MapEditor/Behavior/Bhv_Evt_RefreshMonster.cs
@@ -1,6 +1,8 @@ using System.Collections.Generic; using UnityEngine; using System.IO; using LitJson; using System.Text; #if UNITY_EDITOR using UnityEditor; @@ -45,6 +47,42 @@ } } public override void SaveJson(StringBuilder stringBuilder) { // bw.Write((byte)type); // bw.Write(id); // bw.Write((float)System.Math.Round(transform.position.x, 2)); // bw.Write((float)System.Math.Round(transform.position.y, 2)); // bw.Write((float)System.Math.Round(transform.position.z, 2)); stringBuilder.Append("{"); stringBuilder.Append("\"type\":").Append((byte)type).Append(","); stringBuilder.Append("\"id\":").Append((byte)type).Append(","); stringBuilder.Append("\"px\":").Append((float)System.Math.Round(transform.position.x, 2)).Append(","); stringBuilder.Append("\"py\":").Append((float)System.Math.Round(transform.position.y, 2)).Append(","); stringBuilder.Append("\"pz\":").Append((float)System.Math.Round(transform.position.z, 2)).Append(","); stringBuilder.Append("\"overCondition\":").Append((byte)overCondition).Append(","); stringBuilder.Append("\"refreshType\":").Append((byte)refreshType).Append(","); stringBuilder.Append("\"conditionParam\":").Append(conditionParam).Append(","); stringBuilder.Append("\"overParam\":").Append(overParam).Append(","); stringBuilder.Append("\"nextEventID\":").Append(nextEventID).Append(","); stringBuilder.Append("\"monsterList\":["); if (monsterList.Count > 0) { monsterList[0].SaveJson(stringBuilder); for (int i = 1; i < monsterList.Count; ++i) { stringBuilder.Append(","); monsterList[i].SaveJson(stringBuilder); } } stringBuilder.Append("]"); stringBuilder.Append("}"); } public override void LoadJson(JsonData json) { } public override void Export(BinaryWriter bw) { base.Export(bw); Core/MapEditor/Behavior/Bhv_Evt_RefreshSceneObject.cs
@@ -1,6 +1,8 @@ using System.Collections.Generic; using UnityEngine; using System.IO; using LitJson; using System.Text; #if UNITY_EDITOR using UnityEditor; @@ -182,6 +184,16 @@ } return null; } public override void SaveJson(StringBuilder stringBuilder) { throw new System.NotImplementedException(); } public override void LoadJson(JsonData json) { throw new System.NotImplementedException(); } #endif } Core/MapEditor/Behavior/Bhv_MapData.cs
@@ -75,6 +75,38 @@ } } public string SaveJson() { var _stringBuilder = new System.Text.StringBuilder(); _stringBuilder.Append("{"); _stringBuilder.Append("\"id\":").Append(id).Append(","); _stringBuilder.Append("\"triggerList\": ["); if (triggerList.Count > 0) { triggerList[0].SaveJson(_stringBuilder); for (int i = 1; i < triggerList.Count; ++i) { _stringBuilder.Append(","); triggerList[i].SaveJson(_stringBuilder); } } _stringBuilder.Append("]"); _stringBuilder.Append("},"); _stringBuilder.Append("\"eventList\": ["); if (eventList.Count > 0) { eventList[0].SaveJson(_stringBuilder); for (int i = 1; i < eventList.Count; ++i) { _stringBuilder.Append(","); eventList[i].SaveJson(_stringBuilder); } } _stringBuilder.Append("]"); _stringBuilder.Append("}"); return _stringBuilder.ToString(); } public void Export(BinaryWriter bw) { bw.Write(id); Core/MapEditor/Behavior/Bhv_MapTrigger.cs
@@ -51,6 +51,58 @@ } } public void SaveJson(System.Text.StringBuilder stringBuilder) { stringBuilder.Append("{"); stringBuilder.Append("\"id\":").Append(id).Append(","); stringBuilder.Append("\"triggerType\":").Append((byte)triggerType).Append(","); stringBuilder.Append("\"type\":").Append((byte)type).Append(","); stringBuilder.Append("\"prevID\":").Append(prevID).Append(","); stringBuilder.Append("\"nextID\":").Append(nextID).Append(","); stringBuilder.Append("\"px\":").Append((float)System.Math.Round(transform.position.x, 2)).Append(","); stringBuilder.Append("\"py\":").Append((float)System.Math.Round(transform.position.y, 2)).Append(","); stringBuilder.Append("\"pz\":").Append((float)System.Math.Round(transform.position.z, 2)).Append(","); stringBuilder.Append("\"sx\":").Append((float)System.Math.Round(boxCollider.size.x, 2)).Append(","); stringBuilder.Append("\"sz\":").Append((float)System.Math.Round(boxCollider.size.z, 2)).Append(","); stringBuilder.Append("\"ey\":").Append((float)System.Math.Round(transform.eulerAngles.y, 2)).Append(","); stringBuilder.Append("\"eventIDList\":["); if (eventIDList.Count > 0) { stringBuilder.Append(eventIDList[0]); for (int i = 1; i < eventIDList.Count; ++i) { stringBuilder.Append(",").Append(eventIDList[i]); } } stringBuilder.Append("]"); stringBuilder.Append("}"); } public void LoadJson(LitJson.JsonData json) { eventIDList.Clear(); id = (int)json["id"]; triggerType = (MapTrigger.E_TriggerType)(byte)json["triggerType"]; type = (Evt.E_EventType)(byte)json["type"]; prevID = (int)json["prevID"]; nextID = (int)json["nextID"]; float _pX = (float)json["px"]; float _pY = (float)json["py"]; float _pZ = (float)json["pz"]; float _x = (float)json["sx"]; float _z = (float)json["sz"]; float _eY = (float)json["ey"]; transform.position = new Vector3(_pX, _pY, _pZ); boxCollider.size = new Vector3(_x, 1, _z); transform.eulerAngles = new Vector3(0, _eY, 0); var _jsonData = json["eventIDList"]; for (int i = 0; i < _jsonData.Count; ++i) { eventIDList.Add((int)_jsonData[i]); } } public void Export(BinaryWriter bw) { Save(bw); Core/MapEditor/Behavior/Bhv_MonsterData.cs
@@ -24,6 +24,30 @@ bw.Write((float)System.Math.Round(transform.position.z, 2)); } public void SaveJson(System.Text.StringBuilder stringBuilder) { stringBuilder.Append("{"); stringBuilder.Append("\"resName\":\"").Append(resName).Append("\","); stringBuilder.Append("\"npcID\":").Append(npcID).Append(","); stringBuilder.Append("\"ai\":").Append(npcID).Append(","); stringBuilder.Append("\"px\":").Append((float)System.Math.Round(transform.position.x, 2)).Append(","); stringBuilder.Append("\"py\":").Append((float)System.Math.Round(transform.position.y, 2)).Append(","); stringBuilder.Append("\"pz\":").Append((float)System.Math.Round(transform.position.z, 2)); stringBuilder.Append("}"); } public void LoadJson(LitJson.JsonData jsonData) { resName = jsonData["resName"].ToString(); npcID = (uint)(int)jsonData["npcID"]; ai = (byte)jsonData["ai"]; float _pX = (float)jsonData["px"]; float _pY = (float)jsonData["py"]; float _pZ = (float)jsonData["pz"]; transform.position = new Vector3(_pX, _pY, _pZ); name = "RefreshMonster_" + npcID; } public void Load(BinaryReader br) { npcID = br.ReadUInt32(); Core/MapEditor/Behavior/Bhv_SceneObjectData.cs
@@ -4,83 +4,87 @@ #endif using UnityEngine; public class Bhv_SceneObjectData : MonoBehaviour namespace H2Engine { [HideInInspector] public string resName; public bool isObstacle = false; public class Bhv_SceneObjectData : MonoBehaviour { [HideInInspector] public string resName; public bool isObstacle = false; #if UNITY_EDITOR public void Save(BinaryWriter bw) { bw.Write(resName); Debug.LogFormat("resName: {0}", resName); bw.Write(isObstacle); Debug.LogFormat("isObstacle: {0}", isObstacle); bw.Write((float)System.Math.Round(transform.position.x, 2)); Debug.LogFormat("x: {0}", (float)System.Math.Round(transform.position.x, 2)); bw.Write((float)System.Math.Round(transform.position.y, 2)); Debug.LogFormat("y: {0}", (float)System.Math.Round(transform.position.y, 2)); bw.Write((float)System.Math.Round(transform.position.z, 2)); Debug.LogFormat("z: {0}", (float)System.Math.Round(transform.position.z, 2)); bw.Write((float)System.Math.Round(transform.eulerAngles.y, 2)); Debug.LogFormat("angle: {0}", transform.eulerAngles.y); } public void Load(BinaryReader br) { // 加载逻辑原因在父节点进行读取 // resName = br.ReadString(); isObstacle = br.ReadBoolean(); float _x = br.ReadSingle(); float _y = br.ReadSingle(); float _z = br.ReadSingle(); float _eurlerAngle = br.ReadSingle(); name = "RefreshSceneObject_" + resName; transform.position = new Vector3(_x, _y, _z); transform.eulerAngles = new Vector3(0, _eurlerAngle, 0); } public void Export(BinaryWriter bw) { Save(bw); } private Bhv_SceneObjectData CreateSceneObject(string sceneName = null) { if (!string.IsNullOrEmpty(sceneName)) public void Save(BinaryWriter bw) { string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + sceneName + ".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 = sceneName; 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; bw.Write(resName); Debug.LogFormat("resName: {0}", resName); bw.Write(isObstacle); Debug.LogFormat("isObstacle: {0}", isObstacle); bw.Write((float)System.Math.Round(transform.position.x, 2)); Debug.LogFormat("x: {0}", (float)System.Math.Round(transform.position.x, 2)); bw.Write((float)System.Math.Round(transform.position.y, 2)); Debug.LogFormat("y: {0}", (float)System.Math.Round(transform.position.y, 2)); bw.Write((float)System.Math.Round(transform.position.z, 2)); Debug.LogFormat("z: {0}", (float)System.Math.Round(transform.position.z, 2)); bw.Write((float)System.Math.Round(transform.eulerAngles.y, 2)); Debug.LogFormat("angle: {0}", transform.eulerAngles.y); } return null; } public void Load(BinaryReader br) { // 加载逻辑原因在父节点进行读取 // resName = br.ReadString(); isObstacle = br.ReadBoolean(); float _x = br.ReadSingle(); float _y = br.ReadSingle(); float _z = br.ReadSingle(); float _eurlerAngle = br.ReadSingle(); name = "RefreshSceneObject_" + resName; transform.position = new Vector3(_x, _y, _z); transform.eulerAngles = new Vector3(0, _eurlerAngle, 0); } public void Export(BinaryWriter bw) { Save(bw); } private Bhv_SceneObjectData CreateSceneObject(string sceneName = null) { if (!string.IsNullOrEmpty(sceneName)) { string _path = "Assets/ResourcesOut/Mob/Prefab_Race_" + sceneName + ".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 = sceneName; 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 } } } Core/MapEditor/Editor/MapEditor.cs
@@ -107,10 +107,10 @@ { MapData.LoadFormFile(10010); } // if (GUILayout.Button("保存1", gUISkin.button, GUILayout.Width(60), GUILayout.Height(22))) // { // SaveJson(); // } if (GUILayout.Button("保存1", gUISkin.button, GUILayout.Width(60), GUILayout.Height(22))) { SaveJson(); } EditorGUILayout.EndHorizontal(); /// -------------------------------------------------------------------------------- @@ -334,8 +334,42 @@ // { // return; // } var _jsonData = JsonUtility.ToJson(_mapData); Debug.Log(_jsonData); // LitJson.JsonMapper.RegisterExporter<System.Type>((v, w) => // { // w.Write(v.FullName); // }); // LitJson.JsonMapper.RegisterImporter<string, System.Type>((s) => // { // return System.Type.GetType(s); // }); // System.Action<Vector3, LitJson.JsonWriter> writeVector3 = (v, w) => // { // w.WriteObjectStart(); // w.WritePropertyName("x"); // w.Write((float)v.x); // w.WritePropertyName("y"); // w.Write((float)v.y); // w.WritePropertyName("z"); // w.Write((float)v.z); // w.WriteObjectEnd(); // }; // LitJson.JsonMapper.RegisterExporter<Vector3>((v, w) => // { // writeVector3(v, w); // }); // LitJson.UnityTypeBindings.Register(); // var _json = LitJson.JsonMapper.ToJson(_mapData); Debug.Log(_mapData.SaveJson()); } private class _JsonWritter : LitJson.JsonWriter { } private void Export()