ShaftManagerLocation 스크립트를 만들고 Action을 선언한다.
엘리베이터, 창고와 마찬가지로 오버라이드한 RunBoost 함수에서 호출한다.
MineManager에서 SetupManager 함수를 만들고 매개변수로 받은 값을 location에 할당한다.
Shaft 스크립트에서 변수를 만들고 Instantiate 메서드를 통해 객체를 만들고 변수에 저장한다.
Shaft 스크립트에서 _shaftManagerLocation 변수를 만들고 Start 메서드에서 초기화한다.
CreateManager 함수에서 shaftManager 변수를 통해 MineManager 스크립트를 가져오고,
이를 통해 SetupManager 함수를 호출해 위치를 설정한다.
ShaftUpgrade 스크립트에서 샤프트의 레벨이 10이 되면 매니저가 자동으로 생성되도록 했다.
프리팹으로 만든 매니저를 인스펙터에서 참조해주고,
Create Empty로 만든 ManagerPosition을 드래그하여 참조해준다.
Shaft 오브젝트에 ShaftManagerLocation 스크립트도 추가해주고 Title 이름은 Shaft Manager로 입력했다.
Shaft 스크립트에서 Action 이벤트 구독과 해제를 한다.
ShaftBoost 함수를 만들고 Switch문을 통해 BoostType에 따른 부스트를 실행한다.
여기서 Shaft 스크립트에서 Shaft 참조를 받는 이유는 샤프트가 여러 개이기 때문에
어떤 샤프트인지 확인하고 그 샤프트만 부스트 효과를 적용하기 위해서다.
샤프트 매니저는 층마다 10레벨이 되면 생성되기 때문에 각 층마다 별도로 부스터가 실행되야 한다.
MineManager 스크립트에서 boostImage 변수를 만들고 BoostImage 프로퍼티도 만든 뒤 초기화 한다.
BaseManagerLocation에 MineManager를 추가하고 Shaft 스크립트에서 초기화 한다.
샤프트 매니저일 경우 location이 shaft로 되기 때문에 이를 프로퍼티에 저장하는 것이다.
BaseManagerLocation에서 Manager 스크립트에서 가지고 있는 boostIcon을 가져온다.
managerLocation을 ShaftManagerLocation으로 변환하여 ShaftManagerLocation 변수에 저장한다.
as는 형변환 연산자로 해당 타입으로 변환하는 역할을 하며, 반환이 불가능하면 null을 반환한다.
(타입) 캐스팅은 반환 실패시 예외(InvalidCastException)가 발생하기 때문에 더 안전한 형변환을 할 수 있다.
'유니티' 카테고리의 다른 글
[유니티] 디자인 패턴 : 오브젝트 풀링 (Object Pooling) (0) | 2025.02.15 |
---|---|
[유니티] #18 광부 타이쿤 게임 만들기 (구름, 통화 시스템) (0) | 2025.02.08 |
[유니티] #16 광부 타이쿤 게임 만들기 (부스트) (0) | 2025.02.07 |
[유니티] #15 광부 타이쿤 게임 만들기 (매니저, Mask, RayCast) (0) | 2025.02.05 |
[유니티] #14 광부 타이쿤 게임 만들기 (매니저 카드, Scriptable) (0) | 2025.02.02 |