public static void SaveData(List <TileMapDataList> target, List <TileMapDataList> source) { target.Clear(); foreach (var item in source) { TileMapDataList list = new TileMapDataList(); list.tileMapDataList = new List <TileMapData>(); foreach (var item1 in item.tileMapDataList) { TileMapData mapdata = new TileMapData(); mapdata.OrderInLayer = item1.OrderInLayer; mapdata.SortingLayerIndex = item1.SortingLayerIndex; mapdata.SortOrderIndex = item1.SortOrderIndex; mapdata.TilemapName = item1.TilemapName; mapdata.tileInfoList = new List <TileInfo>(); if (item1.tileInfoList == null || item1.tileInfoList.Count == 0) { Debug.LogError(item1.TilemapName + " tileInfoList is null or count is zero"); } else { foreach (var item2 in item1.tileInfoList) { TileInfo tile = new TileInfo(); tile.ipos = item2.ipos; tile.pos = item2.pos; tile.tile = item2.tile; mapdata.tileInfoList.Add(tile); } } list.tileMapDataList.Add(mapdata); } target.Add(list); } if (target == SourceData.Data) { UnityEditor.EditorUtility.SetDirty(TargetData); UnityEditor.EditorUtility.SetDirty(SourceData); } else if (target == TargetData.Data) { UnityEditor.EditorUtility.SetDirty(TargetData); } File.Copy(Application.dataPath + "/XMtileMap/Data/SourceData.asset", Application.dataPath + "/RefResources/ScriptableObjects/MapData.asset", true); UnityEditor.AssetDatabase.SaveAssets(); UnityEditor.AssetDatabase.Refresh(); }
private void MainGUI() { if (XMMapData.TargetData == null) { GUILayout.Label("副本为空,请设置副本数据"); return; } if (XMMapData.SourceData == null) { GUILayout.Label("源数据为空,请设置源数据"); return; } EditorGUILayout.BeginHorizontal(); GUILayout.BeginVertical(); GUILayout.BeginHorizontal(); strPopupSize = new string[XMMapData.TargetData.Data.Count]; intPopupSize = new int[XMMapData.TargetData.Data.Count]; for (int i = 0; i < intPopupSize.Length; i++) { intPopupSize[i] = i; strPopupSize[i] = (i).ToString(); } EditorGUIUtility.labelWidth = 60; IntPopupIndex = EditorGUILayout.IntPopup("Map ID:", IntPopupIndex, strPopupSize, intPopupSize, GUILayout.ExpandWidth(true), GUILayout.Width(150)); XMMapData.MapID = IntPopupIndex; if (GUILayout.Button("-", GUILayout.Width(35))) { if (EditorUtility.DisplayDialog("提示", "确定要删除地图 【 " + IntPopupIndex + " 】 吗?", "确定", "取消")) { XMMapData.TargetData.Data.RemoveAt(IntPopupIndex); IntPopupIndex -= 1; if (IntPopupIndex <= 0) { IntPopupIndex = 0; } } } if (GUILayout.Button("+", GUILayout.Width(35))) { TileMapDataList list = new TileMapDataList(); XMMapData.TargetData.Data.Add(list); IntPopupIndex = XMMapData.TargetData.Data.Count - 1; tileMaptoolbarOption = 0; Transform grid = GameObject.Find("Grid").transform; tileMaptoolbarTexts = new string[grid.childCount]; for (int i = 0; i < grid.childCount; i++) { tileMaptoolbarTexts[i] = grid.GetChild(i).name; } } GUILayout.EndHorizontal(); GUILayout.Label(XMConst.CopyRight); GUILayout.EndVertical(); if (GUILayout.Button("打开编辑场景", GUILayout.Height(35))) { EditorSceneManager.OpenScene("Assets/XMtileMap/Scenes/XMtileMap.unity"); } if (GUILayout.Button("预 览", GUILayout.Height(35))) { if (CheckNameConflict()) { EditorUtility.DisplayDialog("提示", " Tilemap 名字冲突", "确定"); return; } if (EditorSceneManager.GetActiveScene().name != "XMtileMap") { EditorUtility.DisplayDialog("提示", "请打开 XMtileMap 场景进行编辑", "确定"); return; } if (EditorApplication.isPlaying) { EditorUtility.DisplayDialog("提示", "场景正在播放中,不能进行预览", "确定"); return; } CreateTileMap(); } if (GUILayout.Button("重置副本", GUILayout.Height(35))) { if (EditorUtility.DisplayDialog("提示", "确定要重置副本吗", "确定", "取消")) { IntPopupIndex = 0; XMMapData.SaveData(XMMapData.TargetData.Data, XMMapData.SourceData.Data); } } if (GUILayout.Button("保存副本", GUILayout.Height(35))) { if (CheckNameConflict()) { EditorUtility.DisplayDialog("提示", " Tilemap 名字冲突", "确定"); return; } if (EditorUtility.DisplayDialog("提示", "确定要保存副本吗", "确定", "取消")) { EditorUtility.SetDirty(XMMapData.TargetData); } } //GUI.backgroundColor = Color.green; if (GUILayout.Button("保存数据", GUILayout.Height(35))) { if (CheckNameConflict()) { EditorUtility.DisplayDialog("提示", " Tilemap 名字冲突", "确定"); return; } if (EditorUtility.DisplayDialog("提示", "确定要保存数据吗", "确定", "取消")) { XMMapData.SaveData(XMMapData.SourceData.Data, XMMapData.TargetData.Data); } } //if (GUILayout.Button("保存JSON", GUILayout.Height(35))) //{ // if (CheckNameConflict()) // { // EditorUtility.DisplayDialog("提示", " Tilemap 名字冲突", "确定"); // return; // } // if (EditorUtility.DisplayDialog("提示", "确定要保存数据吗", "确定", "取消")) // { // XMMapData.SaveData(XMMapData.SourceData.Data, XMMapData.TargetData.Data); // XMMapData.SaveToJSON("Assets/XMtileMap/Data/SourceData.json", XMMapData.SourceData); // XMMapData.SaveToJSON("Assets/XMtileMap/Data/TargetData.json", XMMapData.TargetData); // } //} EditorGUILayout.EndHorizontal(); }