-
개발일지 - 스킬5 UI 파트 (최종)프로젝트/방치형 RPG 2023. 8. 15. 22:20
이번 목표 - 스킬 UI관련 코드 리팩토링, 스킬 UI 시스템
지금까지 스킬관련해서 구현한 부분 총 정리를 해보겠습니다.
1. 스킬 테이블 생성
2. DB관련 (firebase)
3. 스킬 UI (스킬 슬롯, 스킬 상세보기), 간단한 UI 연출
4. 스킬 장착 / 해제 기능 (+ 간편 장착/해제 기능)
5. 스킬 레벨업 테이블 생성 (범용적)
6. 스킬 업그레이드 기능
구현 예정인 부분
1. 스킬 구현 (몬스터와 전투)
2. 스킬 쿨타임, 데미지 적용 (+ 대략적인 밸런스)
3. 스킬 오토 시스템 (스킬 자동사용 기능)
■ 1. 스킬 테이블
▲ CSV로 작성한 스킬 테이블입니다. damage, desc 추가 수정이 필요할 거 같습니다.
■ 2. User DB (firebase)
▲ EquippedSkill은 현재 장착한 스킬 정보입니다. '@'로 구분하여 skill_ID를 저장하고 있습니다.
SkillData는 현재 얻은 스킬에 대한 정보입니다. '@'로 구분하여 스킬레벨, 보유갯수로 저장하고 있습니다.
DBManager.cs
void SetDB_SkillAcquireData() { var skillAcquireData = GlobalManager.Instance.DBManager.GetUserStringData(UserStringDataType.SkillData).Split('@'); if (skillAcquireData.Length == 1) // skillAcquireData 없을 경우 { string[] skillData = new string[SkillTemplate.Count]; for (int i = 0; i < skillData.Length; i++) { int skillLevel = 1; int holdingCount = 0; skillData[i] = $"{skillLevel},{holdingCount}"; } GlobalManager.Instance.DBManager.UpdateUserData(UserStringDataType.SkillData, string.Join('@', skillData)); } else if (skillAcquireData.Length < SkillTemplate.Count) // 템플릿에 새로운 테이블 추가됐을 경우 { string[] skillData = new string[SkillTemplate.Count]; for (int i = 0; i < skillData.Length; i++) { int skillLevel = 1; int holdingCount = 0; skillData[i] = $"{skillLevel},{holdingCount}"; } skillAcquireData.CopyTo(skillData, 0); GlobalManager.Instance.DBManager.UpdateUserData(UserStringDataType.SkillData, string.Join('@', skillData)); } }
▲ 확장성을 고려하여 스킬 템플릿(스킬 테이블)에 새롭게 스킬이 추가되어도 대응이 되도록 만들어 놨습니다.
■ 3. 스킬 UI (스킬 슬롯, 스킬 상세보기)
좌 - 스킬 슬롯 프리팹, 우 - 인게임 스킬 슬롯 좌 - 스킬 상세보기 프리팹, 우 - 인게임 스킬 상세보기 ▲ 스킬슬롯은 enum 비트연산을 이용해 의 state에 따라서 UI표시 하도록 했다.
SkillSlot.cs
▲ Init메서드 - 최초 스킬슬롯 생성시 UserData를 받아서 스킬 레벨 / 보유 갯수 / 장착중 정보를 받아서 State를 저장하고 SetSlot 메서드를 이용해서 현재 상태에 따른 스킬슬롯 UI를 표시합니다.
■ 4. 스킬 장착 / 해제 기능 (+ 간편 장착 / 해제 기능)
스킬 간편 장착/해제 MainScene.cs
▲ 스킬 장착하는 함수. 로비 스킬창과 스킬 팝업창의 장착한 스킬 아이콘을 넣어주고 slot의 상태를 장착상태로 바꿔준다.
SetSlot 메서드를 이용해서 현재 상태에 따른 스킬슬롯 UI를 표시합니다. 마지막에는 UserData를 업데이트 해줍니다.
MainScene.cs
▲ 스킬 장착 해제하는 함수. 로비 스킬창과 스킬 팝업창의 스프라이트를 없애고, slot의 상태를 해제상태로 바꿔줍니다.
SetSlot 메서드를 이용해서 현재 상태에 따른 스킬슬롯 UI를 표시합니다. 마지막에는 UserData를 업데이트 해줍니다.
■ 5. 스킬 레벨업 테이블 & 스킬 업그레이드 기능
스킬 강화 레벨 템플릿 MainScene.cs
▲ 강화 버튼 누를시 실행되는 함수. 유저 skillData를 가져와서 스킬을 업그레이드한 후 레벨/보유갯수를 저장해줍니다.
SkillSlot.cs
▲ 스킬 업그레이드 후 업그레이드 조건(개수부족)이 안될시 비트연산을 통해 upgradeable 비트를 0으로 만들어주고 SetSlot메서드를 이용해서 슬롯 UI를 상태에 맞게 변경해줍니다
▲ 잠금상태(스킬 미획득)는 버튼이 활성화가 안됩니다.
'프로젝트 > 방치형 RPG' 카테고리의 다른 글
개발일지 - 스킬 4 (0) 2023.08.09 개발일지 - 스킬 3 (0) 2023.08.07 개발일지 - 스킬 2 (0) 2023.08.07 0727 개발일지 (0) 2023.07.27 0725 개발일지 - 에셋번들 4 (0) 2023.07.25