오늘은 SPUM으로 몬스터 스프라이트를 만들고 애니메이션과 함께 적용했다. 프리팹을 만들던 도중 노가다성이 짙은 것 같아서 아예 에셋에 달려있는 스크립트를 수정해서 스프라이트의 변경점을 모두 일괄 적용 할 수 있게 만들었다.
기본적으로 SPUM 에셋으로 캐릭터를 만들면 프리팹으로 저장할 수 있다. 해당 프리팹은 Resources/SPUM/SPUM_Units에 Unit000, Unit001... 형식으로 저장된다. 여기서 노가다할 것이 생긴다...
1. 생성된 SPUM 유닛에는 Rect Transform이 붙어있다. 그런데 인게임에서 쓸 캐릭터는 Transform을 쓴다.
2. Collider와 Rigidbody가 붙어있지 않다.
3. Monster 컴포넌트도 없다.
그래서 캐릭터를 만들어놓으면 저런것들을 붙여주고 수정해줘야한다. 참고로 원래 몬스터가 18종이었는데 타입 0~2번(일반 몬스터)는 각각 5개씩 따로 종류를 만들어줘서(스탯은 같음) 몬스터가 30종이 생긴 상태이다. 일단 저 30개 노가다 해놓고, 다음에 몬스터 수정점이 생길 때마다 또 같은 작업을 반복해줘야하고... 정말 비효율적이다.
그래서 Resources/SPUM/SPUM_Units 경로에 저장된 유닛정보와 몬스터 오브젝트에 달린 Spum_Prefabs의 정보를 싱크해줄 버튼을 만들었다(인스펙터 창에서 오브젝트에 있는 버튼을 누르면 이름에 대응하는 SPUM유닛을 Resources/SPUM/SPUM_Units 경로에서 찾아서 싱크해준다). 예를들어, "Monster 13"이라는 이름을 가진 프리팹의 Sync 버튼을 누르면 Resources/SPUM/SPUM_Units/unit013의 스프라이트(파츠) 데이터를 가져와 싱크해준다.
SPUM/Script/Editor/SPUM_SpriteList.cs를 보면 CopyDataFromBase()라는 함수가 있는 것을 확인할 수 있는데, 이 함수가 바로 싱크해주는 함수이다. SPUM/Script/Editor/SPUM_SpriteEditor.cs에 GUILayout.Button("Reload Sprites")버튼을 누르면 CopyDataFromBase()함수가 실행되어 싱크되도록 했다.
내일부터는 저번주에 그렸던 UI 스프라이트로 게임에서 쓰일 여러 인터페이스를 만들 것이다.
- 인터페이스 만들기
'게임 개발 > Tower of Rings' 카테고리의 다른 글
8/4 - UI 기능 구현 & 아이템 드롭 & 장면전환 (0) | 2022.08.05 |
---|---|
8/3 - UI 틀 만들기 (0) | 2022.08.04 |
7/30 - UI 스프라이트 완성 (0) | 2022.07.31 |
7/29 - 유물 스프라이트 완성 (0) | 2022.07.30 |
7/28 - 아이템, 유물 ID 0~5번 스프라이트 (0) | 2022.07.28 |