중급 프로그래머 가는 길 재미있게 가보자!
안녕하세요. 프로그래머 JD입니다.
이번 글은 타워 건설 프로젝트로 시작합니다.
일주일에 3개씩 포스팅해보자는 목표를 가지니까 금방금방 진행되는 느낌이 드네요.
역시 사람은 목표의식이 있어야 하는 것 같아요.
이번 프로젝트는 마우스를 사용한 타워 건설인데요 마우스를 이용해서 동적으로 타워를 생성할 수 있게 됩니다.
uml 확인하겠습니다.

uml(class Diaglam)을 확인해보면 두 가지 클래스가 추가된 것을 볼 수 있습니다.
Node클래스와 BuildManager클래스이죠.
근대 BuildManager클래스를 확인해보면 다른 클래스랑 모습이 다른 것을 확인할 수 있습니다.
클래스 이름 위에 <<Singleton>>이라고 적혀있죠. ㄷㄷ
네... gof design 패턴 중 하나인 싱글톤 패턴입니다.
정보처리기사 공부하시는 분들을 많이 들어보셨을 거예요.
<<,>> 문자가 보이는데요 이것은 guillemets이라고 uml에서는 스테레오 타입을 표현할 때 사용되는 것입니다.
class Diaglam을 확인하면 Node클래스가 Turret클래스를 생성하고 BuildManager를 의존하는 것을 볼 수 있어요.
BuildManager는 Turret을 연관 짖고 있습니다.
저희 목적은 Node에다가 turret을 생성하는 것인데 이런 관계를 가진 이유는 Node에 Turret을 생성할 때 BuildManager가 가지고 있는 Turret정보(instance)를 확인하고 생성하기 때문입니다.
그럼 소스코드 확인해보겠습니다.
Node 클래스입니다.
using UnityEngine;
public class Node : MonoBehaviour
{
public Color hoverColor;
public Vector3 positionOffset;
private GameObject turret;
private Renderer rend;
private Color startColor;
private void Start()
{
rend = GetComponent<Renderer>();
startColor = rend.material.color;
}
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);
}
private void OnMouseEnter()
{
rend.material.color = hoverColor;
}
private void OnMouseExit()
{
rend.material.color = startColor;
}
}
멤버 변수는 hoverColor는 마우스가 node에 갔을 때 변하는 색깔입니다.
positionOffset은 생성되는 타워의 이동하는 값입니다. node의 좌표값과 타워의 좌표값이 계산되지 않을 경우 깔끔하게 작업할 수 있습니다.
turret은 타워 객체입니다.
rend는

이것인데 저희는 마우스가 Node object에 가면 색이 변하는데 이것을 원상 복구해야 합니다. 그래서 Node object의 기본 색을 접근하기 위해 사용했습니다.
만약 이 변수를 사용하지 않는다면 저희가 손댄 Node색은 모두 검은색으로 변할 것입니다.
startColor는 Mesh Renderer의 Element0의 색입니다.
오늘은 멤버 변수에 대한 설명으로 이번 글 마치겠습니다.
다음 시간에는 소스 설명과 BuildManager 클래스를 설명해보겠습니다.
읽어주셔서 감사합니다. 소스를 공유해준 유튜버 Brackeys 감사합니다.
출처 -www.youtube.com/watch?v=t7GuWvP_IEQ&list=PLPV2KyIb3jR4u5jX8za5iU1cqnQPmbzG0&index=6
'프로그래밍 > 유니티' 카테고리의 다른 글
| 유니티 3D 게임만들기 타워 디펜스-타워 건설 (3) (0) | 2020.10.08 |
|---|---|
| 유니티 3D 게임만들기 타워 디펜스-타워 건설 (2) (0) | 2020.10.08 |
| 유니티 3D 게임만들기 타워 디펜스-타워생성(5) (0) | 2020.10.08 |
| 유니티 3D 게임만들기 타워 디펜스-타워 생성(4) (0) | 2020.10.02 |
| 유니티 3D 게임만들기 타워 디펜스-타워 생성(3) (0) | 2020.09.30 |