Unity 개발일지

[Unity] BGData 사용법 본문

Unity 개발

[Unity] BGData 사용법

아머르 2025. 5. 21. 23:32

BGDatabase는 Background Game Database로 Unity 에셋스토어에서 판매되는 에셋이다.

 

[Asset Store]

 

BG Database | Data editor with Google Sheets and Excel syncing | 기능 통합 | Unity Asset Store

Use the BG Database | Data editor with Google Sheets and Excel syncing from BansheeGz on your next project. Find this integration tool & more on the Unity Asset Store.

assetstore.unity.com

 

게임 내 데이터(캐릭터, 아이템, 퀘스트 등)를 구조화해서 관리할 수 있는 데이터베이스 시스템으로 다음과 같은 기능으로

 

  • Excel 같은 테이블 형태로 데이터 관리
  • 코드 생성 기능 (Script Generator)
  • 런타임에서 빠르게 데이터 조회 가능
  • CSV/JSON 내보내기 및 가져오기 지원
  • SQLite 연동 가능

다양한 데이터를 쉽게 관리할 수 있다.

 

 

[초기 연동]

에셋을 Import 하면 Window에서 BGDatabase를 이용할 수 있다.

 

화면을 열고 Export/Import 창으로 가보면 아무것도 업을텐데 먼저

Data Sources를 클릭 후 +버튼을 눌러 Name과 타입(해당 프로젝트에서는 Google Sheet 사용)을 설정한다.

편한 이름을 쓰면 되지만 프로젝트 명으로 설정해주었다.

구글 시트에 연결할 수 있는 방법은 4가지인데, API Key나 Anonumous는 읽기 전용이라서 개발용 보다는 BTC나 Live용으로 일반적인 개발 상황에서는 Oauth2.0으로 설정을 진행한다.

 

Client Id와 Client secret은 구글 API의 데스크톱 애플리케이션 Auth를 의미하며 구글 클라우드 플랫폼 콘솔에서 발급 가능하다.

 

[자세한 내용 참고]

 


Client Id, Client secret, Application name, SpreadSheetID란을 채운 후 Get new tokens를 눌러 토큰을 요청 후 인터넷 창에서 추가진행을 하면 토큰 발급이 완료된다.

 

이후 Jobs로 이동해서 +를 눌러 똑같이 생성한 후

Parameters의 DataSource에서 아까 설정해준 이름으로 변경해준다.

 

Merge Settings로 이동하면 Merge Mode를 지정해줄 수 있는데

- Transfer: 치환. 최초에 데이터 베이스를 한번 만들고 Transfer 모드로 익스포트

- Merge: 설정에 따라 병합 시도. 체크박스 옵션을 각각 설정할 수 있으며 일반적인 경우라면 모두 체크해주면 된다.

 

Merge로 설정 후 Add missing entities, Remove orphaned entities, Update matching entities를 모두 체크해주면 기본 설정 끝!

데이터 변경이 생기면 상단의 Settings are modified라고 창 색이 바뀌는데 Save All을 눌러 저장이 가능하다.

 

저장이 완료되면 Saved로 바뀌는 모습을 볼 수 있다.

 

추가로 상단의 Pin to toolbar를 체크하면 좌측 상단에 숏컷 버튼이 나타난다.

 

[사용해보기]

이제 본격적으로 시트를 생성해볼텐데 우선 Configuration으로 이동한다.

현재 Item에 대한 데이터가 없는데

 

+를 눌러 Item을 Add 해준다.

이때 중요한 점은 Meta name과 스프레드 시트의 이름이 동일해야한다.

 

다양한 항목이 있을텐데 새로운 시트 생성 후 Item으로 이름을 바꿔준다.

시트의 위치는 크게 상관없지만 _dbblock_이라는 시트보다는 앞에 둔다.

 

필요한 값들을 생성해준다. 해당 프로젝트에서는 시트와 값을 생성할 때 lower_snake_case 네이밍 컨벤션을 사용했다.

또다른 유의사항으로는 Id라는 값은 BGData에서도 사용하고 있기 때문에 table_Id로 이름을 설정해 주었다.

 

시트에 값을 추가해준 후 (꾸미는건 선택사항) 시트로 돌아와서 +를 눌러서

Name과 Field type filter를 이용하거나 찾아서 입력해준다.

입력 완료 후에는 Add & Close 또는 추가로 필드를 더 추가할거면 Add & Continue를 눌러주면 된다.

 

데이터 등록이 완료된 모습

특이사항으로 Database쪽으로 이동해보면 name은 처음 생성시 부터 이미 추가가 되어있는데 Sheet에서 동일하게 사용하고 있다면 다시 등록해줄 필요가 없다.

 

또다른 특이사항으로 enum 같은 경우에는 프로젝트에서 사용하고 있는 enum의 데이터들을 사용할 수 있다.

 

enum같은 경우에는 스크립트에서 사용하는 enum값들을 적은 후 서식 - 드롭다운에서 색을 설정해주고 값들을 클릭해서 바꿔줄 수 있게 만들어주면 더 원활한 데이터 관리를 해줄 수 있다.

 

이제 Database쪽으로 이동해보면

입력한 필드들이 나열되어있는데 아직 Sheet와는동기화가 되지 않았다.

Export/Import로 이동해서 Import를 해주면 Sheet의 값이 BGData로 들어온다.

(Export를 누르면 BGData의 값이 Sheet로 덮어씌어지므로 주의!)

데이터가 날라갔을 경우 Sheet의 히스토리 기능으로 복구는 가능하지만 주의하도록 하자.

 

Import를 누른 뒤 Sheet의 값들이 정상적으로 들어온 것을 볼 수 있다.

 

Export/Import의 Log를 통해 데이터 등록 로그도 확인할 수 있다.

 

Addons의 CodeGen으로 이동 후 스크립트 경로를 설정해준 후 Generate를 누르면 스크립트가 생성되는데

Configuration에 설정되어있는 값들을 기반으로 유저가 편리하게 사용할 수 있도록 스크립트를 생성해준다. 

이 스크립트를 그대로 사용해도 되지만 해당 프로젝트에서는 TR(Table Row)스크립트를 만들어서 사용했다.

 

TRItem 이라는 스크립트를 만들어서 사용해줄 계획인데,

 

TRFoundation이라는 클래스를 상속하여 만들어주었고, 나머지 스크립트도 작성해준다.

필요한 내용들을 정의해준 후

 

사용하기위해 UtilTable에 등록해준 모습이다.

 

[협업 시 주의할 점]

ITableManager의 GetRecord를 이용할건데

데이터를 수정하면 database쪽의 binary파일이 변경되었다고 뜨는데 각각의 작업자들이 동시에 Database를 수정하면 한쪽의 작업이 모두 사라질 수 있기 때문에 Database를 수정할 때는 브랜치를 따로 두고 한명씩 수정할 수 있도록 하자.

(A가 Attack을 추가하고 B가 Gold를 추가한 후 Merge할 때 각각이 합쳐지는 것이아니라 하나만 적용이 됨)

 

[TableManager 사용법]

해당 방법은 프로젝트에 따라 다를 수 있으니 참고만 할 수 있도록 하자.

처음 생성될 때 다음과 같이 입력해주면 아까 입력했던 값인 apple sword라는 로그가 생긴다.

 

다음과 같이 입력하면 Gold 값이 50 이상인 banana sword와 cup sword가 로그로 생성된다.

반응형