본문으로 건너뛰기

Data Table

Data Table은 중앙화된 게임 데이터 관리 시스템입니다. 게임 내의 다양한 콘텐츠 데이터를 스프레드시트 형식으로 관리하고 CDN을 통해 자동으로 배포할 수 있습니다.

주요 기능

  • 게임 콘텐츠 데이터를 중앙에서 관리
  • 스프레드시트 형식으로 데이터 편집
  • CDN을 통한 자동 배포
  • LINQ 스타일의 강력한 쿼리 기능 제공

컴포넌트 설정

Inspector

Data Table 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();
}
}
사용 팁
  1. 컴포넌트 설정

    • DataTable 컴포넌트는 반드시 GetComponent로 참조해야 합니다
    • 없는 경우 AddComponent로 추가할 수 있습니다
  2. 데이터 관리

    • 콘솔에서 데이터 수정 후 Refresh 버튼으로 최신화
    • 연관된 데이터는 하나의 테이블로 관리
  3. 쿼리 활용

    • Where로 필요한 데이터만 필터링
    • OrderBy로 데이터 정렬
    • FirstOrDefault로 단일 데이터 조회
노트
  • 테이블의 컬럼명과 클래스의 속성명이 일치해야 합니다
  • Refresh Data Tables 버튼으로 최신 데이터를 불러올 수 있습니다
  • CDN을 통해 자동으로 배포되므로 별도의 배포 과정이 필요하지 않습니다