Ejemplo n.º 1
0
        /// <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]);
                }
            }
        }
Ejemplo n.º 2
0
        /// <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();
        }