본문 바로가기

코딩 공부/Unity C#

게임 구성 데이터 파일 game configuration data files

소스 코드를 건드리지 않고 게임을 튜닝할 수 있게 하는 방법

(게임 디자이너가 소스 코드를 건드리지 않고 디자인을 할 수 있도록 하는 법)

> 게임 구성 데이터 파일을 사용한다

 

게임 구성 데이터 파일의 종류 2가지

 

CSV 파일 (Comma-Separated Value)

쉽게 내보낼 수 있음: 스프레드시트 프로그램에서 데이터를 쉽게 CSV 형식으로 저장할 수 있다.
읽기 어려움: CSV 파일의 원본 데이터를 읽기 어렵다. 데이터가 단순한 텍스트로 나열되기 때문이다.

 

XML 파일 (eXtensible Markup Language)

읽기 쉬움: XML 파일은 구조화된 형식으로 데이터를 저장하므로 사람이 읽기 더 쉽다. 태그를 사용하여 데이터의 의미를 명확히 할 수 있다.
커스텀 XML 편집기 필요: XML 파일을 사용하기 위해서는 특별한 편집기가 필요할 수 있으며, 이를 위해 맞춤형 XML 편집기를 만드는 것이 좋다


유니티에서 게임 구성 데이터 사용하여 코드 작성

CVS 파일 (상 엑셀, 하 노트패드)

 

ConfigurationData 클래스

필드 부분

- 다른 클래스에서 접근할 수 있는 클래스이다

- 변수의 값을 저장하는 컨테이너

- cvs 파일명을 string에 저장한다

- 미리 변수의 디폴트값을 지정한다 (파일에서 지정값을 불러오지 못해도 실행이 가능하도록)

 

속성 부분

- 필드에는 접근을 못하지만, 속성은 모두 접근할 수 있도록 한다

- 모든 필드에 대한 속성이 존재한다

생성자 메서드

- csv 파일을 읽을 수 있도록 StreamReader 객체를 저장한다

- Path.Combine 메서드로 경로를 결합한다. 유니티의 에셋에 파일이 존재한다면 따로 파일을 불러올 필요없다.

- 파일의 텍스트를 읽어서 변수에 저장한다

 

- 예외 발생을 catch에서 잡아주고 finally에서 파일을 닫는다

ConfigurationData 메서드의 SetCounfigurationDataField 메서드

- CSV 파일에서 설정되어 있는 값으로 해당 변수의 값을 지정하고 있는 코드이다

- 이 코드에서는 해당 변수들의 순서를 알고 있다고 가정하고 있다

- split 메서드를 사용하여 ',' 로 값을 끊고, 값들을  string 리스트에 저장하고 있다

 

ConfigurationUtils 클래스

- 유틸리티 클래스를 만들어서 모든 객체가 직접 구성 데이터를 가지고 다니지 않도록 한다
- 유틸리티 클래스는 게임 내의 여러 객체가 필요할 때 정보를 쉽게 가져올 수 있도록 도와주는 역할이다

- static 속성(객체가 필요없는 속성)인 것을 제외하면, 구성 데이터가 제공하는 데이터와 똑같은 구성이다

- 리턴값을 객체 랩핑(Object Wrapping: 객체를 다른 형태로 감싸서 사용하기 쉽게 만드는 것 )해줬다.

configurationData.TeddyProjectileImpulseForce 로 랩핑을 하여 특정 객체의 속성값에만 접근하게 한다.

특정 객체의 속성값에만 접근할 수 있으므로 정보에 안전하고 간편하게 접근할 수 있다.

ConfigurationUtils 클래스의 랩핑을 한 속성에 접근을 한 예시

- Configuration의 클래스에서 초당버거이동속도(속성값)을 가져왔다

- ConfigurationUtils의 속성에 있는 값을 변경하고 싶으면 소스 코드가 아닌, csv 파일의 값만 변경하면 된다

 - 마지막으로 ConfigurationData 객체를 생성 및 초기화하면 된다

- ConfigurationData 객체를 생성, ConfigurationData 객체의 생성자처럼 파일을 열고 값을 읽어들여 필드로 파싱

(Parsing:  데이터를 특정한 구조로 나누어 해석하는 과정, 데이터 구조를 이해할 수 있는 형식으로 변환할 때 사용 )

 

GameInitializer 클래스에서 아까 메서드 호출

- awake 메서드에서 Initialize 메서드를 호출하면 Start 메서드가 호출되기 전에 awake 메서드가 호출된다

- 오브젝트가 시작 메서드를 실행하기 전에 ConfigurationUtils와 ConfigurationData를

 파일에서 실제로 다시 불러오고 모든 설정이 완료되도록 할 수 있다

'코딩 공부 > Unity C#' 카테고리의 다른 글