Overview
com.111percent.percent-table
무엇인가요?
압축된 데이터 파일을 압축 해제 한 후 csv파일들을 Parsing하여 게임 내에서 사용할 수 있도록 가공해주는 패키지입니다. 기존의 Perbase.Data, Perbase.LittleCSV, Perbase.Table을 하나로 통합한 패키지입니다.
왜 만들었나요?
Legacy 패키지(Perbase V1)의 Table 기능을 사용하고 계시는 분들이 많았는데, 데이터를 다루는 구글 스프레드 시트와 연동도 안되고 사용해보니 많은 불편을 느껴 그 점을 덜어드리고자 만든 패키지입니다.
어떻게 사용하나요?
문서를 참고해주세요.
준비하기
- Unity 버전:
Unity 2022.3.X
이상 - 지원 OS: Android, iOS
Notion Docs
NOTE: 해당 기능을 사용할 때 Stripping Level
은 Android
, iOS
모두 Minimal
로 꼭! 설정 부탁드립니다.
추가 기능 설명
Table setting window 및 Code generate 설정
이게 뭔가요?
- CSV 파일을 Parsing 하여 게임 내에서 테이블 데이터를 쉽게 사용할 수 있도록 기능을 지원합니다.
- Google sheet에 작성된 데이터를 기반으로 스크립트와 csv를 생성해요.
어떤 기능이 있나요?
- 아래 자료형 지원
- bool
- DateTime
- Enum
- int
- long
- List
- float
- string
- 위 자료형들의 Array
- Google Spreadsheet 내 줄 띄어쓰기 지원
DataServiceLoader
이 클래스를 통해 테이블이 로드됩니다.
- DataServiceLoader 변수 선언 후 Create 호출
- 클래스 내 비동기/동기, 복호화 유무를 판단한 메소드 호출로 IDataLoader 얻어옴 (=DataLoaderFactory 기능 호출)
- 얻어온 IDataLoader를 LoadAsync 파라메터로 전달하여 테이블 로드 (=DataService 기능 호출)
- Task 값이 true라면 테이블 로드 완료
DataServiceLoader 클래스를 설명하는 코드는 예제 코드를 참고해주세요.
IGameDataCenter (GameDataCenter)
데이터 형식을 컨테이너로 변환하여 읽기 및 관리할 수 있는 인터페이스 형식입니다.
DataService
IDataLoader 인터페이스 형식을 읽어 DataService
IGameDataCenter 인터페이스로 구현된 클래스를 필요로 합니다.
DataContainer
ITableData를 IReadOnlyDictionary로 가지고 있는 클래스입니다.
해당 클래스는 GameDataCenter에서 테이블 별로 선언되어 가지고 있는 형식입니다.
using Percent.Table.Data;
public sealed class GameDataCenter : IGameDataCenter
{
public DataContainer<LocalizationData> LocalizationData { get; internal set; }
public DataContainer<ExampleData> ExampleData { get; internal set; }
}
ITableData
데이터 형식을 사용하기 위해 변환할 수 있다는걸 알리기 위한 인터페이스 형식입니다.
DataContainer
- 프로퍼티 형식만 지원합니다. 필드 형식은 지원하지 않습니다.
using Percent.Table.Data;
public class LocalizationData : ITableData
{
public string Id { get; set; }
public string StringId { get; set; }
public string Ko { get; set; }
public string En { get; set; }
public string Tw { get; set; }
public string Ja { get; set; }
}
예제 코드
Tip
사용 전에, csv파일이 포함된 폴더를 Assets/Resources 경로 안에 위치해주셔야 합니다.
using System.IO;
using Percent.Table;
using Percent.Table.Data;
using UnityEngine;
async void LoadTable()
{
// loader를 사용하기 위해 꼭 호출해주어야 합니다.
// Create 파라메터 인자는 Assets/Resources 폴더 내의 테이블 경로(폴더)만 입력해주시면 됩니다.
// Assets/Resources/{0} : {0} 경로만 Create 파라메터에 추가해주세요. 아래 예시는 Assets/Resources/DataTable/ 안의 데이터들을 불러옵니다.
IDataServiceLoader serviceLoader = await DataServiceLoader.Create<GameDataCenter>("DataTable");
// ----------------------- 두 가지 방법 중 상황에 맞게 택 1 -----------------------
// 비동기 방식으로 폴더 접근하여 IDataLoader 받아옴
var dataLoader = await serviceLoader.GetLoaderPathAsync();
// 동기 방식으로 폴더 접근하여 IDataLoader 받아옴
var dataLoader = serviceLoader.GetLoaderPath();
// ----------------------- 두 가지 방법 중 상황에 맞게 택 1 -----------------------
// 모든 테이블 로드
var result = await serviceLoader.LoadAsync(dataLoader);
if (result)
{
// 테이블 로드 완료, 테이블 사용 예시
var datas = DataService<GameDataCenter>.GetDataCenter();
var localization = datas.LocalizationData;
}
else
{
// 테이블 로드 중 오류가 난 사항 출력
Debug.Log(result.ErrorMessage);
}
}
버전 기록
2024-04-25
1.2.14
Local Event-Notification 대응 코드 변경
2024-04-23
1.2.13
테이블 Read가 오래 걸리는 이유로 직렬 → 병렬로 프로세스 방식 변경
2024-04-11
1.2.11
GUI 로직 대거 변경
2024-04-08
1.2.10
Perbase V2 여부에 따라 IShopProductList를 참조할지 말지 판단, Code Generate에 반영
2024-04-08
1.2.8, 1.2.9
Perbase 서버 솔루션 대응
ITableData 변수들 set을 public → internal로 변경
2024-04-05
1.2.7
ScriptableObject의 m_Script가 풀리는 이슈 수정
2024-04-04
1.2.6
Percent Purchase를 사용하는 경우 Code Generate 시 ShopProductList 클래스는 IShopProductList를 상속하도록 추가
2024-04-03
1.2.5
Perbase에서 사용하는 서버 솔루션 이슈 대응
2024-03-22
1.2.4
Perbase를 사용하는 서버 솔루션에서도 패키지를 사용할 수 있도록 대응
2024-03-21
1.2.3
Percent Encryption 업데이트 대응
2024-03-19
1.2.2
ITableData 생성 시 키워드 추가 기능 패치
2024-03-18
1.2.1
CSV 파싱, code generate 이슈 수정
2024-03-07
1.1.5
Localization 동작 이슈 수정
2024-03-06
1.1.4
1.1.4 버전 업데이트 문서 추가
2024-02-15
1.1.3
이슈 수정
2024-02-01
1.1.0
2024-01-30
1.0.8
2024-01-25
1.0.7
Code Generator, 배열 등 대거 추가 및 개선, Sample 추가 및 문서 내용 추가
2024-01-18
1.0.5
안드로이드 빌드에서 테이블 로드 사용할 수 있도록 로직 개선
2024-01-18
1.0.4
네임스페이스 에러 제거, Path로 Csv 읽어오는 기능 추가
2024-01-17
1.0.3
Array 빈 값 처리
2024-01-16
1.0.2
DataServiceLoader 추가, Array 관련 기능 추가 및 Sample 코드 수정
2024-01-15
1.0.1
첫 배포 (예정) 및 문서 작성 및 Sample 추가