2024.11.27(수)
JSON을 이용한 방식
사용 패키지 GitHub 주소: GitHub: ExcelToJsonWizard
1. key와 int(type), ID(description)를 그림1과 같이 작성하여 데이터를 넣을 수 있다.
- 그림1
2. 그림2와 같이 제공된 클래스와 메서드들을 이용해 사용할 수 있다.
- 그림2
3. 그림3은 enum타입을 정의하고 사용하는 방법이다
- 그림3
4. 그림4와 같이 DesignEnums에 엑셀시트에서 작성한 enum이 모이게 된다.
- 그림4
5. DesignEnums를 활용한 데이터의 모습은 그림5와 같다.
- 그림5
6. 그림6은 엑셀 파일을 어떻게 다룰 지 옵션을 보여준다.(당장은 건드릴 필요가 없다.)
- 그림6
ScriptableObject를 이용한 방식
사용 패키지 GitHub 주소: GitHub: Unity Excel Importer
Package 주소: https://github.com/mikito/unity-excel-importer.git?path=Assets/ExcelImporter#v0.1.1/upm
1. 그림7과 같이 데이터를 저장한다
- 그림7
2. 그림8과 같은 형식으로 데이터를 받는다.
- 그림8
3. 그림9와 같은 형식으로 데이터를 받는다. 29:00
- 그림9
4. 그림10과 같은 형식으로 아이템DB를 만들고, 스크립트에서 꺼내쓰는 형식으로 사용 가능하다.
- 그림10
5. 그림10과 같은 방법처럼 인덱스를 통해 접근하는 것보단,
그림11처럼 전체 순회가 가능한 Enumerator를 가져와서 접근하는 방식이 좋다.(고 생각한다-by YYC튜터님)
(캡슐화를 강조하기 때문에 직접적으로 사용하는 방식은 권장하지 않는다.)
- 그림11
6. 그림12과 같이 모든 데이터가 저장되는 Database에 ItemDB들을 저장해서(우리 입장에서는 꼭 Item일 필요는 없음)
Database에 있는 DB들을 꺼내서 쓸 수 있음.
- 그림12
7. 그림13, 14, 15처럼 id를 이용해, 메인 카테고리, 서브 카테고리, 개별 인덱스 형식으로 나눌 수도 있다.
8. 그림16처럼 강화방법에 따른 데이터 저장법이 나뉠 수 있다.
(하지만, 우리는 아마 대부분의 상황에서 강화방법 1을 사용할 것이다.)
- 그림16
9. (개인적인 의문)그림 17에서 정의한 타입이 그림18에서 자동으로 매칭이 되는가?
- 그림17
- 그림18
10. 그림19는 던전의 강화된버전들을 정리한 방법의 예시다(그림16의 강화방법 2 예시)
-> 그림 20처럼 추가했을 때의 인덱스를 고려해서 엑셀시트를 작성한다.
-
그림19
-
그림20
11. 그림21처럼 id를 테이블 번호와 카테고리 인덱스를 나눠서 작성한다.(그림13,14,15내용)
- 그림21
12. 그림22처럼 하위 데이터를 테이블 별로 데이터를 관리를 하고,
그림23처럼 상위 데이터에 하위 데이터 테이블을 연결해서 사용한다.
-
그림22
-
그림23
13. 그림24처럼 행동과 타겟, 횟수로 퀘스트를 구분할 수 있다.
그림25처럼 행동과 타겟을 연결하고, 횟수를 부여하면 해당 조건이 되는 식으로 만들 수 있다.
완료되면, 그림26과 같은 형식으로 사용할 수 있다.
(우리의 프로젝트에서는 '게이트 종류에 상관없이 6회 클리어'라는 조건을 보여주지
않을 수 있지만, 기획자로서 데이터 테이블을 넣을 때, 어떤 조건인지를 보는 용도로도
사용 가능할 것이다.)
14. 그림27 형식으로 테이블을 정리해서 사용하면 좋을 것이다.
- 그림27
15. 계산의 정확도를 위해 그림28을 고려하거나, 글로벌 런칭을 고려하기 위해 그림29를 생각할 수도 있을 것이다.
-
그림28
-
그림29
16. 그림30처럼 버프수치 옆에 (%) 표시를 적어 단위에 대한 명확성을 보여주는 게 좋다.
- 그림30
17. 그림31처럼 확률처럼 부동소수점 형식으로 처리가 될 때,
그림28에서의 얘기처럼 float보단 int를 쓰는 게 정확도에 도움이 될 것이다.
-
그림31
-
그림28
18. 부동소수점은 그림32처럼 이루어져 있으며,
그림33과 같은 표준 형식을 사용해서 사용할 수 있을 것이다.
그림34처럼 int의 표현범위를 고려해 9자리 수로 나타낼 수도 있을 것이다.
19. 그림35: 그리고, 스트링은 모두 글자기 때문에, ID를 초기에는 너무 크게 잡지 않는 게 좋다.
하지만, 필요하다면 길어도 신경쓰지 말자.
- 그림35
- 그림36처럼 float값을 가질 데이터와 int값을 가질 데이터를 고려하여 상황에 맞게 작성하자.
- 그림36
21. 그림 37처럼 배율을 (100=1%)로 적용할 건지 정해서 엑셀시트에 입력할 수 있다.
- 그림37
22. 그림38에 있는 isClear처럼 유저가 클리어 했는지에 대한 데이터는
유저의 행동에 의해 바꿀 수 있게 만든다.
- 그림38
23. 그림39처럼 speed나 itemText라고 적기보단, moveSpeed와 attack스피드처럼 어떤 스피드인지,
itemName과 itemDescription처럼 어떤 Text인지 명확하게 해주는 것이 좋다.
- 그림39
24. 그림40같은 동일한 내용은, 그림41처럼 통일하여 표현하는 것이 좋다.
(나쁜 사례: 그림42, 좋은 사례: 그림43)
25. 여러 데이터를 처리할 때, 그림44처럼 스킬을 3개 칸을 주고, 비어있으면 그냥 두거나,
','를 지우면서 다음 데이터들을 리스트로 가져올 수 있다.(JSON에서 썼던 거랑 비슷한 듯)
- 그림44
26. 그림45처럼 그룹테이블을 만들어서 적용할 수도 있을 것이다.(우리가 처음 고려했던 것과 비슷)
- 그림45
27. 그림46처럼 던전 이름을 ID값으로 다른곳에서 작성하게 만들면,
나중에 다국어 패치를 할 때, 해당 부분만 바꿔서 끼워주면 된다.
- 그림46
28. 그림47처럼 작성하면, 문자열에 데이터를 넣어서 만들어 줄 수 있다.
- 그림47
29. 실제 물리적인 파일은 그림48처럼 경로를 이용해서 추가할 수 있다.
- 그림48
30. 그림49처럼 리소스와 경로를 따로 분리해서 저장도 가능
- 그림49
하루종일 TIL만 작성하셨나요??? 양과 질이 어마무시하군요. 우수 TIL 선정되신거 미리 축하드립니다