-
스파르타 최종프로젝트 32일차게임 개발기록 2024. 7. 28. 17:34
1. 땅굴스킬 마무리
땅굴 스킬을 만드는 과정 중에 문제가 되는 것이 있었다.
땅 같은 경우 시작 땅과 재생성이 되는 땅으로 나뉜다.
이런 구조에서 땅이 생길 때마다, private List<FloorController> spawnFloors = new List<FloorController>(); 이러한 리스트에 추가 시키게 해서 공사 스킬을 사용 할 때 이 List의 순서대로 공사가 되게 했는데 시작땅 같은 경우 스크립트도 달라서 어떻게 해야 할지 고민이 됐다.
굳이 여러가지를 더 생성을 해서 되게끔만 하게 할 것인가, 그러면 한 개를 위해서 계속해서 갖고 있는 게 늘어나게 되는 것인데
그러다가 인터페이스를 사용 해보기로 했다.
Construction이라는 인터페이스를 만들고 List도 인터페이스로 만들어서 추가 시키게 하는 것으로 말이다.
그렇게 하다가 Controller를 갖고 있어야 할 블록이 있었다.
재생성블록이란 것에서 초기화가 될 때 본인의 컨트롤러에 리페어 블록들을 리스트에 넣어줘야 하는 것이 있었기 때문이다.
그런데 맵 자체가 달라서 두 개를 만들어서 조건문을 넣던가 해야 했었다.
그런데 이것도 인터페이스로 해보고자 했다.
이런 식으로 바로 리스트에 추가 되게끔 해줬는데, 이 리스트에 추가 하는 것을 인터페이스로 만들어서 인터페이스를 갖고 있게 해보자.
그런데 인터페이스는 직렬화가 안 됐다. 이렇게 되면 Controller에서 이 블록을 또 변수로 만들어두고 갖고 있어야 한다. 그러면 하나를 위해 2개를 저장 해야 했다.
블록도 컨트롤러를 갖고 있어야 했고, 컨트롤러도 블록을 갖고 있어야 했다. 물론 지금 생각 하면 함수를 만들어서 매개변수로 컨트롤러를 넣는 방법도 될 것 같기는 한데, 지금은 이렇게 했다.
이렇게 인터페이스를 상속 받은 클래스를 하나 만들어서 땅들에게 이거를 상속 시키게 했다.
그런데 어차피 나중에 초기화 문제 때문에 컨트롤러가 캐싱 해두고 있었어야 해서 괜히 했다.
아무튼 이렇게 인터페이스로 만들어서 시작땅과 재생성 되는 땅이 다르더라도 같은 인터페이스를 활용 하게 함으로써 두 개를 다 활용 할 수 있게 만들어서 스크립트가 다른 데 같은 것을 해야 하는 문제를 해결 했다.
이후에 저장기능을 추가 하는 부분에 있어서 역시 좀 크게 수정을 했어야 했고 꽤 오래 걸렸는데 저장기능까지 추가 해서 잘 마무리를 하였다.
시작땅을 어떻게 포함 시킬까가 생각이 안 낫는데 인터페이스가 떠올라서 비교적 쉽게 추가 하였다.
역시 방법만 떠올리면 그 다음은 쉬운 것 같다.
이제 다음은 영웅과 상점이다.
100연뽑 드가자
'게임 개발기록' 카테고리의 다른 글
스파르타 최종프로젝트 34일차 (1) 2024.07.30 스파르타 최종 프로젝트 33일차 (0) 2024.07.29 스파르타 최종 프로젝트 30일차 (0) 2024.07.26 스파르타 최종 프로젝트 29일차 (0) 2024.07.25 스파르타 최종 프로젝트 28일차 (6) 2024.07.24