Data Table
Data Table은 중앙화된 게임 데이터 관리 시스템입니다. 게임 내의 다양한 콘텐츠 데이터를 스프레드시트 형식으로 관리하고 CDN을 통해 자동으로 배포할 수 있습니다.
주요 기능
- 게임 콘텐츠 데이터를 중앙에서 관리
- 스프레드시트 형식으로 데이터 편집
- CDN을 통한 자동 배포
- LINQ 스타일의 강력한 쿼리 기능 제공
컴포넌트 설정
Inspector
- Refresh Data Tables: 최신 데이터로 업데이트
컴포넌트 참조
public class GameDataManager : MonoBehaviour
{
private BACKND.DataTable _dataTable;
void Awake()
{
_dataTable = GetComponent<BACKND.DataTable>();
if (_dataTable == null)
{
_dataTable = gameObject.AddComponent<BACKND.DataTable>();
}
}
}
데이터 정의 및 사용
아이템 데이터 예시
id,name,type,grade,price,attack,defense
1001,Ancient Sword,Weapon,Legendary,5000,150,0
1002,Steel Armor,Armor,Rare,2000,0,80
1003,Health Potion,Consumable,Common,100,0,0
클래스 정의
public class ItemData
{
public int id;
public string name;
public string type;
public string grade;
public int price;
public int attack;
public int defense;
}
데이터 조회
public class ItemManager : MonoBehaviour
{
private BACKND.DataTable _dataTable;
void Awake()
{
_dataTable = GetComponent<BACKND.DataTable>();
}
// 단일 아이템 조회
public ItemData GetItem(int itemId)
{
return _dataTable.From<ItemData>()
.Where(x => x.id == itemId)
.FirstOrDefault();
}
// 특정 등급의 아이템 목록
public List<ItemData> GetItemsByGrade(string grade)
{
return _dataTable.From<ItemData>()
.Where(x => x.grade == grade)
.ToList();
}
}
실전 예시: 몬스터 데이터
데이터 구조
id,name,level,health,attack,defense
1,Goblin,1,100,10,5
2,Wolf,3,150,15,8
3,Dragon,10,1000,100,50
구현 예시
public class MonsterData
{
public int id;
public string name;
public int level;
public int health;
public int attack;
public int defense;
}
public class MonsterManager : MonoBehaviour
{
private BACKND.DataTable _dataTable;
void Awake()
{
_dataTable = GetComponent<BACKND.DataTable>();
}
// 레벨 범위로 몬스터 찾기
public List<MonsterData> GetMonstersByLevel(int minLevel, int maxLevel)
{
return _dataTable.From<MonsterData>()
.Where(x => x.level >= minLevel && x.level <= maxLevel)
.OrderBy(x => x.level)
.ToList();
}
// 가장 강력한 몬스터 찾기
public MonsterData GetStrongestMonster()
{
return _dataTable.From<MonsterData>()
.OrderByDescending(x => x.attack)
.FirstOrDefault();
}
}
사용 팁
컴포넌트 설정
- DataTable 컴포넌트는 반드시 GetComponent로 참조해야 합니다
- 없는 경우 AddComponent로 추가할 수 있습니다
데이터 관리
- 콘솔에서 데이터 수정 후 Refresh 버튼으로 최신화
- 연관된 데이터는 하나의 테이블로 관리
쿼리 활용
- Where로 필요한 데이터만 필터링
- OrderBy로 데이터 정렬
- FirstOrDefault로 단일 데이터 조회
노트
- 테이블의 컬럼명과 클래스의 속성명이 일치해야 합니다
- Refresh Data Tables 버튼으로 최신 데이터를 불러올 수 있습니다
- CDN을 통해 자동으로 배포되므로 별도의 배포 과정이 필요하지 않습니다