public static void saveMap(Grid grid)
    {
        var tileSceneJson = new TileSceneJson {
            sceneName = SceneManager.GetActiveScene().name
        };
        var tilemaps = grid.GetComponentsInChildren <Tilemap>();

        foreach (var tilemap in tilemaps)
        {
            var         tilemapRenderer = tilemap.GetComponent <TilemapRenderer>();
            TilemapJson tilemapJson     = new TilemapJson();
            tileSceneJson.tilemaps.Add(tilemapJson);
            tilemapJson.name  = tilemap.name;
            tilemapJson.order = tilemapRenderer.sortingOrder;
            foreach (var pos in tilemap.cellBounds.allPositionsWithin)
            {
                var tile = tilemap.GetTile(pos);
                if (tile != null)
                {
                    var assetPath       = AssetDatabase.GetAssetPath(tile);
                    var assetBundleName = AssetImporter.GetAtPath(assetPath).assetBundleName;
                    var tileJson        = new TileJson
                    {
                        x = pos.x, y = pos.y, bundle = assetBundleName, asset = tile.name
                    };
                    tilemapJson.tiles.Add(tileJson);
                }
            }
        }

        var jsonStr = JsonUtility.ToJson(tileSceneJson, true);

        PlayerPrefs.SetString($"scene_{tileSceneJson.sceneName}", jsonStr);
        Debug.Log(jsonStr);
    }
Example #2
0
 private void LoadJson(string path)
 {
     using (StreamReader r = new StreamReader(Path.Combine(Engine.ContentDirectory, path + ".json")))
     {
         string readJson = r.ReadToEnd();
         tileJson = JsonConvert.DeserializeObject <TileJson>(readJson);
     }
 }
Example #3
0
    /// <summary>
    /// 初始化
    /// </summary>
    public static void Init()
    {
        if (isInit)
        {
            return;
        }
        isInit = true;
        JsonData userInfo = Get(DataType.UserInfo);

        currentTile = AddTileJson(int.Parse(userInfo["tileId"].ToString()));
        FreshData();
    }
Example #4
0
    /// <summary>
    /// 添加地块
    /// </summary>
    /// <param name="id"></param>
    static TileJson AddTileJson(int id)
    {
        JsonData tileJson = GetData(id, DataType.TileList);

        if (tileJson == null)
        {
            tileJson = WriterTileJson(id);
        }
        TileJson tile = JsonMapper.ToObject <TileJson>(tileJson.ToJson());

        tileMap.Add(tile.id, tile);
        return(tile);
    }
Example #5
0
    /// <summary>
    /// 切换地块
    /// </summary>
    /// <param name="coordinate"></param>
    public static void SwitchTile(Vector2 coordinate)
    {
        int key = GetTileIdByCoordinate(coordinate);

        if (tileMap.ContainsKey(key))
        {
            currentTile = tileMap[key];
        }
        else
        {
            currentTile = AddTileJson(key);
        }
        FreshData();
        NotiCenter.DispatchEvent(KCEvent.KCTileChange);
    }
Example #6
0
        public void HandleTile(TileJson tileJson, bool mainThread)
        {
            if (!mainThread)
            {
                tileQueue.Add(tileJson);
                return;
            }
            GridTile t;

            if (!_tiles.ContainsKey(tileJson.Id))
            {
                t = Instantiate(tilePrefab, transform);
            }
            else
            {
                t = _tiles[tileJson.Id];
            }
            t.Awake();
            t.X  = tileJson.X;
            t.Y  = tileJson.Y;
            t.Id = tileJson.Id;

            _tiles[tileJson.Id] = t;
        }