중급 프로그래머 가는 길 재미있게 가보자!

안녕하세요. 프로그래머 JD입니다. 

이번 글은 타워 디펜스 타워 건설 두 번째 시간입니다.

저번 시간에는 Node클래스의 멤버 변수를 설명했습니다. 이번 글은 본격적으로 메서드에 대한 설명을 하겠습니다.

    private void Start()
    {
        rend = GetComponent<Renderer>();
        startColor = rend.material.color;
    }

start() 문입니다.

이함수의 역할은 private로 선언한 startColor의 값을 기본색으로 대입하는 것입니다. 

 

그다음 함수는 OnMousDown(),OnMousEnter(),OnMouseExit()함수가 있는데 

모두 공통으로 OnMous가 들어가있는 함수로 마우스와 관련 있는 함수입니다.

OnMousDown() 함수는 마우스를 클릭했을 때 호출되는 함수입니다.

OnMousEnter() 함수는 마우스 커서가 있을 때 호출되는 함수입니다.

OnMousExit() 함수는 마우스 커서가 있다가 없어질 때 호출되는 함수입니다.,

 

우선 OnMousEnter()함수와 OnMousEnter() 함수부터 확인해보겠습니다.

OnMousDown() 함수는 singleton 패턴을 설명해야 할 것 같아서 마지막에 설명하겠습니다.

    private void OnMouseEnter()
    {
        rend.material.color = hoverColor;
    }

마우스를 댄 노드에 hoverColor색을 대입합니다.

기본색은 회색이고 저희는 추후에 진한 회색을 대입할것입니다.

    private void OnMouseExit()
    {
        rend.material.color = startColor;
    }

마우스 커서가 노드에서 Exit(탈출하다)하게 되면 기본색을 대입합니다.

 

OnMousDown() 함수입니다.

    private void OnMouseDown()
    {
        if(turret!=null)
        {
            Debug.Log("Can't build there! -TODO: Display on screen.");
            return;
        }
        GameObject turretToBuild = BuildManager.instance.GetTurretToBuild();
        turret = Instantiate(turretToBuild, transform.position + positionOffset, transform.rotation);
    }

조건문은 turret이 날이 아닐 때 발생합니다.

저희가 해당 노드에 타워를 설치한 후 다시 노드를 클릭했을 때 생기는 에러를 예외 처리한 것입니다. 

그다음 BuildManager의 GetTurretToBuild() 함수를 호출한 뒤 turretToBuild에 대입합니다. 

나중에 설명하겠지만 GetTurretToBuild() 함수는 Turret object를 반환합니다.

그런 후 Turret object를 생성합니다.

저희가 중요하게 봐야 할부분은 6번째 줄인 BuildManager.instance.GetTurretToBuild() 부분입니다.

싱글턴 패턴을 사용하는 부분인데 이것은 저희가 생성할 Turret object가 공유하고 있다는 부분으로 생각하시면 될 것 같아요. 

예를 들면 1번 노드에 타워를 생성하고 2번 노드에 타워를 생성했을 때 

2번 노드의 타워의 속도를 10에서 15로 수정했을 경우 1번 노드의 타워의 속도도 15로 자동 수정된다는 뜻입니다.

이것이 싱글턴 패턴을 사용하는 이유입니다.

싱글턴 패턴의 핵심은 static이라고 할 수있는데 기본 멤버변수는 객체의 속성이라고 할수있다면 static은 클래스 속성이라고 할수 있죠. 

이번 글은 여기서 마무리하고 다음 글에는 BuildManager클래스를 설명하는 시간을 갖겠습니다. 

읽어주셔서 감사합니다. 소스를 공유해준 유튜버 Brackeys 감사합니다.

출처 -www.youtube.com/watch?v=t7GuWvP_IEQ&list=PLPV2KyIb3jR4u5jX8za5iU1cqnQPmbzG0&index=6

 

+ Recent posts