중급 프로그래머 가는 길 재미있게 가보자!
안녕하세요. 프로그래머 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
'프로그래밍 > 유니티' 카테고리의 다른 글
| 유니티 3D 게임만들기 타워 디펜스-타워 건설 (3) (0) | 2020.10.08 |
|---|---|
| 유니티 3D 게임만들기 타워 디펜스-타워 건설 (1) (0) | 2020.10.08 |
| 유니티 3D 게임만들기 타워 디펜스-타워생성(5) (0) | 2020.10.08 |
| 유니티 3D 게임만들기 타워 디펜스-타워 생성(4) (0) | 2020.10.02 |
| 유니티 3D 게임만들기 타워 디펜스-타워 생성(3) (0) | 2020.09.30 |