Esempio n. 1
0
 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();
 }
Esempio n. 2
0
        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();
        }