[타워디펜스게임] #9. 몬스터 생성 카운트

치치·2025년 2월 15일
0

타워디펜스게임

목록 보기
9/18
post-thumbnail

오늘의 목표

몬스터의 생성과 감소를 몬스터 카운트의 UI에 표시되게 하기

  • 근데 이거 구조를 잘못짠 거 같다.
    -> 왜냐하면, 보통 게임을 하게되면 총 적의 갯수가 나오지. 적이 나올때마다 갯수가 증가하지 않는다
    -> 아래의 수정된 최종 코드가 있다

  • 몬스터가 일정한 간격으로 랜덤위치에 생성되는데, 생성될 때마다 카운트가 증가되게 할것이다.

  • MonsterCount 스크립트를 따로 생성하여, 카운트의 증가, 감소 함수를 정의해두고 필요할때마다 가져다가 쓸것이다
    -> 몬스터가 생성될때마다 증가함수가 호출되고, 몬스터가 죽으면 감소함수가 호출되야한다
    -> 몬스터의 생성은 MonsterSpawner 스크립트 쪽이기 때문에, 이 함수를 가져다가 쓴다
    -> 몬스터가 죽으면 추상 부모 클래스인 MonsterStat스크립트에서 감소함수를 호출한다



MonsterCount 스크립트 전체 코드

  • MonsterCount 스크립트에는 Monster의 카운트와 관련된 함수들이 정의되어있다
    1. 증가 / 감소
    1. UI 업데이트
    1. 몬스터의 카운트 확인 후 게임 종료 판단

수정사항

monsterCount 변수의 접근지정자를 public으로 바꾸고 monsterSpawner 스크립트에서 사용

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class MonsterCount : MonoBehaviour
{
    public static MonsterCount Instance; // Singleton으로 관리

    private int monsterCount = 0;        // 활성화된 몬스터의 수
    public Text monsterCountText;       // UI Text로 몬스터 카운트 표시

    GameResult GameResult;
    private void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
        }
        else
        {
            Destroy(gameObject);
        }
    }

    private void Start()
    {
        UpdateMonsterCountUI();
        GameResult = gameObject.GetComponent<GameResult>();
    }

    public void IncreaseCount()
    {
        monsterCount++;
        UpdateMonsterCountUI();
    }

    public void DecreaseCount()
    {
        monsterCount--;
        UpdateMonsterCountUI();

        if (monsterCount <= 0)
        {
            EndGame();
        }
    }

    private void UpdateMonsterCountUI()
    {
        if (monsterCountText != null)
        {
            monsterCountText.text = $"남은 몹: {monsterCount}";
        }
    }

    private void EndGame()
    {
        Debug.Log("게임 종료");
        Time.timeScale = 0;
        GameResult.Victory();
    }
}

IncreaseCount() 사용

실수

이 부분 수정해야한다
-> 몬스터의 카운트는 증가할 필요가 없다
-> 처음부터 총 몬스터의 갯수가 있고, 죽을때마다 카운트가 감소하기만 하면 된다
-> 몬스터의 카운트가 0이 되면 종료

첫 몬스터의 카운트 수를 큐의 카운트로 지정



DecreaseCount() 사용

몬스터가 유닛에게 공격받아 파괴될 경우 호출된다

  • MonsterStat 스크립트에서 호출한다


성공적으로 첫 시작에서 몬스터가 하나도 생성되지 않았지만, 앞으로 생성될 몬스터의 갯수가 UI에 표시된다

profile
뉴비 개발자

0개의 댓글