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); }
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); } }
/// <summary> /// 初始化 /// </summary> public static void Init() { if (isInit) { return; } isInit = true; JsonData userInfo = Get(DataType.UserInfo); currentTile = AddTileJson(int.Parse(userInfo["tileId"].ToString())); FreshData(); }
/// <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); }
/// <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); }
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; }