ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스파르타 최종프로젝트 27일차
    스파르타 게임 개발 2024. 7. 24. 00:02

    1. 아이템 만들기

    유물 같은 것을 만들 생각이다.

    아이템을 획득 해서 능력치가 상승 되게 하는 것이다. 

     

    먼저 아이템도 어떻게 해야 할지 고민이 되었다. SO를 만들어야 할까. 

    하지만 굳이 만들필요는 전혀 없었다. 아이템은 List만 갖고 있으면 돼서 매우 쉬웠다고 볼 수 있다. 

     

    CSV로 리스트를 만들어 놓고 DataManager가 이 itemList를 갖고 있게 한 다음에 아이템을 획득 하게 될 때 이 리스트에서 랜덤으로 주면 될 것 같았다.

     

    이런 식으로 한 줄마다 Data를 갖고 있는 Calss를 만들고 그 Class들을 데이터매니저가 리스트로 갖게 했다. 

     

    그 다음에 아이템을 획득 했을 경우에 그 아이템들의 데이터를 참조 해서 슬롯을 생성 해내고, 능력치가 적용 되게 하면 된다. 

     

    먼저 슬롯부터 만들었다. 일단 UI디자인을 아예 싹 다 바꿀 예정이라 기존 사용 하던 것들에서 자막과 Icon만 남기게 했다. 

     

    이렇게 만든 다음에 아이템을 획득 하게 되면 이 슬롯을 생성해내고 데이터에 맞게 바뀌게 하면 된다. 

    그런데 똑같은 아이템을 획득 할 경우에 슬롯이 하나 더 생기는 것이 아니고, 기존에 있는 것이 레벨이 올라야 한다. 

     

    그래서 이부분만 신경을 써주면 된다. 

    나는 이것을 이렇게 처리 했다. 

     

    참조형을 이용해서 만들었다고 할 수 있는데,

    Item Calss에 Action을 만들었다. 이 이벤트는 레벨업이 될 때 실행이 되게 할 것이다. 

     

    액션을 만든 다음에, 슬롯을 생성하고 데이터를 넣을 때 이 Item Action에 슬롯 함수를 저장 시키게 만들었다. 

    그래서 아이템이 레벨이 오르게 되면 슬롯의 UI가 다시 초기화 되게끔 해줬다. 

     

    그리고 저장도 추가를 해줬는데 그냥 PlayerInventory 자체를 다 저장 시키게 하고, 나중에 로드 할 때 저장 된 갯수만큼 슬롯 다시 생성 하고 등등 하게 해놓았다. 

     

    그리고 아이템을 획득 하면 이 슬롯 뿐 아니라, 유닛들이랑 플레이어들의 공격력도 업데이트 되어야 한다. 

    그래서 이벤트를 하나 더 만들었다. 

     

    레벨업이 될 때 자막들도 바뀌게, 원래 모든 자막 바뀌게 하는 것을 이벤트로 만들어두고 하면 편했는데 안 하고 있었다.

     

    그런데 이 아이템 레벨업시 자막 바뀌게 하는 것은 이벤트 아니면 하질 못 해서 다른 방법 있나? 아무튼 이벤트 만들어서 레벨업을 하게 되면 이 이벤트를 호출 하는 것까지 추가를 해서 마무리 했다. 

     

    이제 나중에 50M나 100m 내려갔을 때 보물상자 발견 해서 아이템 획득 하게끔 하면 될 것 같다. 

    보물상자가 스폰이 되어야 한다. 

     

    어떻게 하면 되려나. 일단은 pass 나중에 추가 하면 될 것 같다. 

     

    요즘 컨디션 관리를 실패 했는지 몸에 힘이 없다. 잠을 좀 충분히 자야 할 것 같다.

    아무튼 이렇게 하고 나서, 저장기능까지 추가를 했다. 

     

    저장은 아이템 인벤토리 자체를 저장 하게 했다. 

    그런데 이 때 아이템을 전부 제대로 불러왔는데, 아이템 똑같은 것을 획득 해도 레벨업이 되지 않았다. 

     

    이유는 그것이었다. 

     

    나는 참조형이니까 다시 불러오면 또 그대로 적용이 되겠지 하면서 코드를 이런 식으로 작성을 했었다.

     

    그런데 내 생각대로 되는 게 아니였고, 로드를 해올 때 DataManager에 있는 것을 찾아서 넣는 게 아니라 저장해둔 클래스 자체로 덮어 버리는 것이여서 DataManager에 있는 것과 다르게 되어서 이런 식의 코드가 작동이 안 되던 것이었다. 

    DataManager는 CSV에서 List를 new를 통해서 생성 하기 때문이다. 

     

    물론 로드를 할 때 아이템 넘버값을 저장 하고 DataManager에 있는 것을 참조하게 하면 내 생각대로 되긴 할 것이다.

    아니면 로드를 했을 때 저장 된 아이템으로 DataManager에 있는 것을 바꾸던가 이런 식으로 하면 되긴 할 것인데, 일단 디테일은 나중에 챙기기로 하고 지금은 

     

    이렇게 수정을 해서 문제를 해결 하였다. 먹은 아이템이 가방에 있는 것과 같다면 레벨업 하게 바꾸었다. 

    사실 이거 디버그 하는데 조금 걸렸다. 

     

    그래도 고민을 계속 했기 때문에 점점 기본실력이 늘고 있는 기분은 드는 것 같다. 

     

    오늘은 이렇게 해서 마무리인데 내일 모레면 중간발표다. (사실 지금 작성하는 시점에서는 발표가 끝났다.) 

    그 때까지 영웅 100연뽑을 할 수 있을까다. 보여줘야 하는데

     

    그래도 일단 아이템 제작과 유물까진 만들었으니 이제 100연뽑만 만들면 된다. 

    거의 끝이 보인다. 

     

Designed by Tistory.