본문 바로가기
카테고리 없음

[유니티] #4 광부 타이쿤 게임 만들기 (상자, UI)

by 디버그러 2025. 1. 14.

 

새로운 Deposit 스크립트를 생성한다.

프로퍼티로 CurrentGold를 선언하고 DepositGold, RemoveGold 함수를 선언한다.

각각 매개변수로 amount를 받아서 +, - 하는 함수다.

 

 

 

Shaft 스크립트에 SerializeField로 depositPrefab 변수를 추가하여 인스펙터에서 입금을 할 것이다.

 

 

 

Boxes 스프라이트를 Multiple로 바꾸고 Automatic으로 Slice 한다.

 

 

 

씬에 상자를 배치하고 ShaftDeposit으로 이름 변경했다.

Deposit 스크립트를 추가하고 프리팹으로 만든다.

 

 

 

상자를 생성할 장소 depositInstantiationPos를 변수로 선언한다.

CreateDeposit 함수를 만들고 Instantiate로 상자를 생성한다.

 

 

 

프로퍼티로 CurrentDeposit을 선언한다.

입금 상자가 생성될 때 Shaft 하위에 들어가도록 하여 자식 오브젝트로 만든다.

이렇게 하면 계층 구조를 깔끔하게 유지할 수 있다.

 

 

 

_minerContainer 변수를 선언하고 Start 메서드에서 새로운 오브젝트를 만들도록 한다.

CreateMiner 함수가 실행되면 광부는 이 컨테이너 안에 들어가게 돼서 깔끔한 구조를 만들 수 있다.

 

 

 

Shaft 안에 Canvas를 만들고 Render Mode를 World Space로 변경한다.

Camera에 Main Camera를 넣는다.

 

 

 

캔버스의 사이즈가 너무 크기 때문에 Width와 Height를 2로 만든다.

Shaft의 크기와 같도록 크기를 조정해준다.

 

 

 

Canvas 안에 UI 이미지를 만들고 사이즈가 너무 크니 5, 5로 조정한다.

 

 

 

Canvas의 Sorting LayersUI로 지정한다.

UI는 Player보다 앞에 렌더링 되도록 만들었다.

 

 

 

Icon 스프라이트로 들어가서 Multiple로 바꾸고 Automatic Slice 한다.

 

 

 

Image에 코인 스프라이트를 넣고 크기를 0.3으로 줄인 후 위치를 조정했다.

현재 상자에 모인 코인을 볼 수 있도록 만들 것이다.

 

 

 

TextMeshPro를 만들어서 크기를 1로 줄인다.

Font Size도 0.25로 줄이고 왼쪽 정렬, 세로 중앙 정렬 한다.

Wrapping은 텍스트 크기가 박스를 초과할 경우 다음 줄로 텍스트가 넘어가게 하는 기능인데 여기선 필요하지 않으므로 Disabled 한다.

 

 

 

ShaftUI 스크립트를 만들고 Start 메서드에서 Shaft 스크립트를 초기화한다.

(Shaft 스크립트를 참조하기 위해 이 스크립트는 Canvas가 아니라 Shaft에 넣어야 한다.)

Update 메서드에서 text에 현재 골드를 표시하도록 한다.

현재 골드는 Deposit 스크립트에 있기 때문에 Shaft 스크립트를 통해 CurrentGold 프로퍼티에 접근하여 값을 가져온다.

 

 

 

이 코드에서 사용한 프로퍼티 초기화 방법을 아래 정리해봤다.

Instantiate 함수는 프리팹을 기반으로 새 오브젝트를 생성하며, 생성된 오브젝트에 대한 참조를 반환한다.

이 반환된 참조를 변수에 저장하면, 생성된 오브젝트를 조작하거나 초기화할 수 있다.

 

 

ShaftMiner 스크립트의 CurrentShaft는 광부가 이동할 장소를 알려주는데 필요하다.

Shaft 스크립트에서 광부를 만들면서 같이 초기화하고 있다.

생성된 광부를 newMiner에 저장하여 계층 구조를 정리할 수 있다.

 

 

 

Shaft 스크립트의 CurrentDeposit은 골드를 모으기 위해 필요하다.

같은 스크립트에서 입금 상자를 만들면서 초기화 하고 있다.

생성된 입금 상자를 CurrentDeposit 프로퍼티에 저장하면 다른 곳에서 쉽게 접근할 수 있다.

 

 

 

강의 출처: #11 Deposit Class (Unity Tutorial | Tycoon idle game)