Exemplo n.º 1
0
        private void ShowTileMapInfo()
        {
            EditorGUIUtility.labelWidth = 120;
            TileMapData item = tilemapData[tileMaptoolbarOption];

            if (GUILayout.Button("-", GUILayout.Width(30)))
            {
                if (EditorUtility.DisplayDialog("提示", "确定要删除 " + item.TilemapName + " 吗?", "确定", "取消"))
                {
                    tilemapData.Remove(item);
                    tileMaptoolbarOption = 0;
                }
            }
            GUILayout.BeginHorizontal();
            GUILayout.BeginVertical();
            string[] StrlayersPopupSize = new string[SortingLayer.layers.Length];
            int[]    intlayersPopupSize = new int[SortingLayer.layers.Length];
            for (int i = 0; i < intlayersPopupSize.Length; i++)
            {
                intlayersPopupSize[i] = i;
                StrlayersPopupSize[i] = SortingLayer.layers[i].name;
            }
            string[] SortOrderPopupSize    = { TilemapRenderer.SortOrder.BottomLeft.ToString(), TilemapRenderer.SortOrder.BottomRight.ToString(), TilemapRenderer.SortOrder.TopLeft.ToString(), TilemapRenderer.SortOrder.TopRight.ToString() };
            int[]    intSortOrderPopupSize = { (int)TilemapRenderer.SortOrder.BottomLeft, (int)TilemapRenderer.SortOrder.BottomRight, (int)TilemapRenderer.SortOrder.TopLeft, (int)TilemapRenderer.SortOrder.TopRight };

            item.TilemapName       = EditorGUILayout.TextField("TileMap Name : ", item.TilemapName, GUILayout.Width(250));
            item.SortOrderIndex    = EditorGUILayout.IntPopup("Sort Order:", item.SortOrderIndex, SortOrderPopupSize, intSortOrderPopupSize, GUILayout.ExpandWidth(true), GUILayout.Width(250));
            item.SortingLayerIndex = EditorGUILayout.IntPopup("Sorting Layer:", item.SortingLayerIndex, StrlayersPopupSize, intlayersPopupSize, GUILayout.ExpandWidth(true), GUILayout.Width(250));
            item.OrderInLayer      = EditorGUILayout.IntField("Order in Layer : ", item.OrderInLayer, GUILayout.Width(250));
            GUILayout.EndVertical();

            GUILayout.BeginVertical();
            if (GUILayout.Button("预  览", GUILayout.Width(100)))
            {
                CreateCurTileMap();
            }

            GUILayout.EndVertical();
            GUILayout.EndHorizontal();

            if (item.tileInfoList == null)
            {
                GUILayout.Label("Tile Count : 0");
            }
            else
            {
                GUILayout.Label("Tile Count : " + item.tileInfoList.Count);
            }

            scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
            if (item.tileInfoList != null)
            {
                for (int i = 0; i < item.tileInfoList.Count; i++)
                {
                    XMTile tile = (XMTile)item.tileInfoList[i].tile;
                    GUILayout.Label("【" + (i + 1).ToString("0000") + "】   walkable:" + tile.walkable + "      destroable:" + tile.destroable + "      Pos:" + item.tileInfoList[i].pos + "      Tile:" + tile);
                }
            }
            EditorGUILayout.EndScrollView();
        }
Exemplo n.º 2
0
 /// <summary>
 /// 设置TileMap
 /// </summary>
 /// <param name="map"></param>
 /// <param name="tileMapDataList"></param>
 public static void SetTileMap(Tilemap map, TileMapData tileMapData)
 {
     if (tileMapData.tileInfoList != null)
     {
         foreach (var tile in tileMapData.tileInfoList)
         {
             map.SetTile(tile.ipos, tile.tile);
         }
     }
 }
Exemplo n.º 3
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();
 }
Exemplo n.º 4
0
        private void TileMapContent()
        {
            if (XMMapData.TargetData == null || XMMapData.SourceData == null || XMMapData.TargetData.Data == null || XMMapData.TargetData.Data.Count == 0)
            {
                return;
            }

            tilemapData = XMMapData.TargetData.Data[IntPopupIndex].tileMapDataList;

            GUILayout.BeginHorizontal();

            if (GUILayout.Button("+", GUILayout.Width(30)))
            {
                if (tilemapData.Count < 5)
                {
                    TileMapData data = new TileMapData();
                    data.TilemapName       = data.TilemapName + (tilemapData.Count + 1).ToString();
                    data.OrderInLayer      = 0;
                    data.SortingLayerIndex = 0;
                    data.SortOrderIndex    = 0;
                    tilemapData.Add(data);
                    tileMaptoolbarOption = tilemapData.Count - 1;
                }
                else
                {
                    EditorUtility.DisplayDialog("提示", "最多只能创建 5 个Tilemap", "确定", "取消");
                }
            }

            if (XMMapData.TargetData.Data.Count == 0)
            {
                return;
            }
            if (tilemapData == null)
            {
                GUILayout.Label("TileMaps Count: 0");
                return;
            }
            else
            {
                GUILayout.Label("TileMaps Count: " + tilemapData.Count);
            }
            GUILayout.EndHorizontal();


            if (tilemapData == null || tilemapData.Count == 0 ||
                tilemapData.Count < tileMaptoolbarOption + 1) //这里的作用是,切换地图的时候可能会因为Tilemap数量不一样导致报错
            {
                tileMaptoolbarOption = 0;
                return;
            }


            int count = tilemapData.Count;

            tileMaptoolbarTexts = new string[count];
            for (int i = 0; i < count; i++)
            {
                tileMaptoolbarTexts[i] = tilemapData[i].TilemapName;
            }
            tileMaptoolbarOption = GUILayout.Toolbar(tileMaptoolbarOption, tileMaptoolbarTexts, GUILayout.Height(20));
            switch (tileMaptoolbarOption)
            {
            case 0:
                ShowTileMapInfo();
                break;

            case 1:
                ShowTileMapInfo();
                break;

            case 2:
                ShowTileMapInfo();
                break;

            case 3:
                ShowTileMapInfo();
                break;

            case 4:
                ShowTileMapInfo();
                break;
            }
        }