Пример #1
0
    public override void Enter()
    {
        goalAreas = MonoBehaviour.FindObjectsOfType <GoalArea>();
        ai        = MonoBehaviour.FindObjectOfType <AirHockeyAI>();
        player    = MonoBehaviour.FindObjectOfType <PadController>();

        foreach (GoalArea area in goalAreas)
        {
            // ゴールしたときの処理を登録
            area.OnGoaled = (type) =>
            {
                puck.SetActive(false);
                ai.SetActiveOperation(false);
                player.SetActiveOperation(false);

                // 塗られた色の割合を求め,スコアに適用する
                float ratio = DynamicPaintManager.Instance.ComputeColorRatio(type);
                ScoreStore.Instance.IncrementPoint(type, ratio);
            };
        }

        // スコアが更新されたときの処理を登録
        inGameUiController.OnScoreUpdated = () =>
        {
            // 現在のゲームをリセットする
            if (ScoreStore.Instance.Round < MaxRound)
            {
                Reset();
            }
            // 最大ラウンドまでしたら,ゲーム終了
            else
            {
                isGameFinished = true;
            }
        };

        ai.Initialize(new HS_Normal());
        inGameUiController.PlayView();
        Reset();
    }