コード例 #1
0
    // 削除フラグが立っているマス目のブロックを削除
    private void CheckDeleteBlocks()
    {
        Block[] targets = new Block[0];
        int     x       = 0;

        // ターンの継続判定,チェイン数の更新を行う
        if (turnManager.ChainTimerProp > 0)
        {
            // チェイン継続処理
            chainManager.AddChainNum();
            // タイマーにチェイン継続時間をセットする
            turnManager.SetChainTimer(DeleteTime + FallTime * GetVerticalMatch());
        }
        else
        {
            // チェインリセット処理
            chainManager.ResetChainNum();
            // タイマーにチェイン継続時間をセットする
            turnManager.SetChainTimer(DeleteTime + FallTime * GetVerticalMatch());
        }

        // チェイン判定終了後ブロックの削除を開始する
        for (int i = StageSize - 1; i + 1 > 0; i--)
        {
            for (int j = 0; j < StageSize; j++)
            {
                // フラグの立っているマス目のブロックを削除
                if (deleteTable[i, j])
                {
                    Array.Resize(ref targets, x + 1);
                    targets[x]        = stage[i, j].GetComponent <Block>();
                    deleteTable[i, j] = false;
                    x++;
                }
            }
        }

        // 現在のチェイン数と消したブロック数に応じてスコアを加算
        scoreManager.AddScore(chainManager.CurrentChainProp, targets.Length);

        // 削除対象のブロックが存在するなら削除
        if (targets.Length > 2)
        {
            StartCoroutine(DeleteBlock(targets));
        }
    }