본문 바로가기
유니티

[유니티] #16 광부 타이쿤 게임 만들기 (부스트)

by 디버그러 2025. 2. 7.

 

ManagersController 스크립트에 RestoreManagerCard 함수를 추가했다.

위의 코드는 for 루프를 이용해 순환하며 해당 매니저를 찾는 것이고,

아래 코드는 Find 함수를 이용해 최적화한 것이다.

 

 

 

UnassignManager 함수를 이용해 방금 만든 함수를 호출하고 해당 위치에 매니저를 할당 해제한다.

 

 

 

이제 Unassign 버튼을 눌렀을 때 매니저가 할당 해제되고 다시 목록으로 돌아오게 된다.

하지만 아직 패널에는 고용된 것으로 보이므로 수정해야 한다.

 

 

 

UI 패널을 참조하기 위한 assignedManagerPanel 변수를 선언한다.

UpdateAssignedManagerInfo 함수에 로직을 추가한다.

managerLocation의 Manager가 비어있으면 값을 모두 null로 바꾸는 것이다.

마지막으로 버튼에 이벤트로 넣은 UnassignManager 함수에서

이 함수를 호출하면 매니저를 해제한 순간 패널도 비활성화 된다.

 

 

 

부모 스크립트인 BaseManagerLocation 스크립트에 string 변수인 locationTitle을 추가했다.

다른 스크립트에서도 쓸 수 있도록 프로퍼티로 만들어준다.

 

ManagersController 스크립트에서 매니저 패널의 타이틀을 가져오기 위해 Text 변수를 선언한다.

인스펙터에서 참조가 필요하다.

 

또한 OpenPanel 함수에서 value가 true일 경우 해당 타이틀이 나오도록 하면 된다.

 

 

 

WarehouseManagerLocation 스크립트를 새로 만들었다.

엘리베이터와 창고에 각각 Location 스크립트를 넣고 인스펙터에서 타이틀에 들어갈 이름을 작성한다.

 

 

 

ElevatorManagerLocation 스크립트에 Action을 선언한다.

오버라이드한 RunBoost 함수에서 호출한다.

 

 

 

ElevatorMiner 스크립트에서 ElevatorBoost 함수를 만들고 Action 이벤트를 구독했다.

switch문을 통해 BoostType에 따른 로직을 구현할 것이다.

 

 

 

ManagersController 스크립트에서 코루틴을 만든다.

startSpeed에 부스터 전의 속도를 저장해두고 value 값을 곱한 후, 일정시간 후에 다시 처음 값으로 바꾸는 것이다.

 

 

 

RunMovementBoost 함수와 RunLoadingBoost 함수에서 코루틴을 호출한다.

다른 스크립트에서 이 함수를 호출하기 때문에 public으로 선언해야 한다.

 

 

 

ElevatorMiner 스크립트에서 ElevatorBoost 함수에 내용을 추가한다.

매니저의 부스트 타입에 맞는 코루틴을 실행하여 생산량을 증가시키는 것이다.

 

 

 

WarehouseManagerLocation 스크립트에 Action을 선언한다.

오버라이드한 RunBoost 함수에 연결한다.

 

 

 

창고도 warehouseMinerBoost 함수를 선언하여 Action 이벤트에 구독한다.

foreach문을 이용해 Miners 리스트에 있는 모든 광부의 생산량을 증가시킨다.

 

 

 

매니저 위에 있는 버튼에 RunBoost 함수를 연결한 상태다.

Debug 모드를 키고 버튼을 눌러보면 광부의 이동 속도가 5배가 증가한 25가 된 것을 볼 수 있다.

코루틴 함수를 호출했기 때문에 일정 시간이 지나면 원래 값으로 돌아온다.

 

 

 

매니저의 능력에 따른 부스트 아이콘이 머리 위에 뜨도록 해야 한다.

BaseManagerLocation에 변수를 선언하고 인스펙터에서 참조한다.

UpdateAssignedManagerInfo 함수에서 아이콘도 업데이트 되도록 호출하면 완성이다.

 

 

 

실행해보면 매니저를 고용했을 때 아이콘이 바뀌고, 버튼을 누르면 광부가 부스트 된다.

 

 

강의 출처: #47 Boosts (Unity Tutorial | Tycoon idle game) - YouTube