/// <summary> /// ゲームオーバー描画 /// </summary> public void DrawGameOver(IReadOnlyList <short> board) { for (int y = 0; y < gameTile.Size.y; y++) { for (int x = 0; x < gameTile.Size.x; x++) { Vector3Int tilePos = new Vector3Int(gameTile.Origin.x + x, gameTile.Origin.y + y, 0); Vector3Int gridPos = ConvertTileToGrid(tilePos, boardTilemap); int tileType = BoardInfo.GetBoardTypeFromOriginZero(gridPos.x, gridPos.y, board) != 0 ? 1 : 0; boardTilemap.SetTile(tilePos, eachTilePrefabs[tileType]); } } }
/// <summary> /// BoardInfo情報をもとにTile情報更新 /// </summary> /// <param name="board"></param> public void UpdateTilePanel(IReadOnlyList <short> board) { // HasSyncTileCallbackのGCを極力抑えるため、tileTypeAryに格納して一括適用 for (int y = 0; y < gameTile.Size.y; y++) { for (int x = 0; x < gameTile.Size.x; x++) { int idx = CalcIdx(x, y, gameTile.Size.x); int tileType = BoardInfo.GetBoardTypeFromOriginZero(gameTile.GridPosAry[idx].x, gameTile.GridPosAry[idx].y, board); gameTile.TileTypeAry[idx] = eachTilePrefabs[tileType]; // alpha弄ってる可能性があるので戻す Vector3Int tilePos = new Vector3Int(gameTile.Origin.x + x, gameTile.Origin.y + y, 0); boardTilemap.SetTileFlags(tilePos, TileFlags.None); boardTilemap.SetColor(tilePos, new Color(1, 1, 1, 1)); } } // これでもまだGCが出て困っている。 gameTile.DrawTile(); }