Files
UnrealEngineUWP/Engine/Documentation/Source/Programming/Basics/ConfigurationFiles/ConfigurationFiles.KOR.udn
Ben Marsh 49831a5631 Include documentation source in repository.
[CL 2489162 by Ben Marsh in Main branch]
2015-03-24 08:35:52 -04:00

159 lines
8.2 KiB
Plaintext

INTSourceChangelist:2481343
Availability: Public
Title: 환경설정 파일
Crumbs: %ROOT%, Engine, Programming, Programming/Basics
Description:게임플레이나 엔진 작동방식 프로퍼티 세팅이 들어있는 텍스트 파일입니다.
Version: 4.5
[TOC (start:2 end:3)]
## 개요
환경설정 파일은 프로젝트 로드시 초기화시킬 프로퍼티에 대한 값을 설정하는 데 사용될 수 있습니다. 환경설정은 섹션별로 배치된 키-값 짝으로 이루어집니다.
주어진 키에 하나 이상의 값이 할당될 수 있습니다.
엔진 환경설정 파일은 오브젝트와 변수 기본값에 사용됩니다. 사용자 입력 환경설정 파일은 키 바인딩(지정)에 사용됩니다. 기본적으로 **프로젝트 마법사** 를 통해 빈 프로젝트를 생성하면,
`DefaultEngine.ini`, `DefaultGame.ini` 파일이 생성됩니다. 템플릿으로 새로 시작하는 프로젝트의 경우도 필요에 따라 `DefaultEditor.ini`, `DefaultInput.ini` 환경설정 파일이 생성될
수 있습니다.
`SaveConfig()` 함수는 [](Programming\UnrealArchitecture\Reference\Classes\Specifiers\Config) 클래스 지정자가 붙은 클래스에서 호출할 수 있습니다. 그러면
[](Programming\UnrealArchitecture\Reference\Properties\Specifiers\Config) 프로퍼티 지정자로 마킹된 프로퍼티를 적합한 환경설정 파일에 저장합니다. 일반적으로 `SaveConfig()` 로 저장된 변수는
**[(패키지).(클래스명)]** 형식을 따르는 섹션 제목에 들어갑니다. 예를 들어 `DefaultEngine.ini` 의 **[/Script/Engine.Engine]** 섹션은 Engine 패키지에 저장된 Engine 클래스를 가리킵니다.
하드코딩된 섹션 이름에는 예외가 있을 수 있습니다.
기존에 환경설정 파일의 편집을 통해서만 접할 수 있었던 여러가지 세팅은, 언리얼 에디터에서 [](Engine\UI\ProjectSettings) 에디터를 통해 접할 수 있습니다.
## 환경설정 변수 지정하기
환경설정 파일에서 어떤 변수를 읽어들일지 지정하기 위해서는, 해당 변수가 들어있는 클래스의 `UCLASS` 매크로에 `Config` 지정자를 먼저 붙여야 합니다.
UCLASS(Config=Game)
class AExampleClass : public AActor
[REGION:tip]
참고로 (Game 과 같은) 카테고리에는 반드시 `Config` 지정자가 붙어야 합니다. 그래야 클래스의 변수를 읽어들이고 저장할 환경설정 파일을 결정할 수 있습니다. 가능한 카테고리 모두
`FConfigCacheIni` 에 정의됩니다. 모든 환경설정 파일 카테고리 목록은, [환경설정 카테고리](#환경설정카테고리) 부분을 참고하시기 바랍니다.
[/REGION]
클래스에 `Config` 지정자를 붙이는 것은 그저 그 클래스가 환경설정 파일에서 읽어들일 변수가 있고, 어느 파일에서 환경설정을 읽어들일지를 나타낼 뿐입니다.
환경설정 파일에서 읽어들이고 저장할 변수를 지정하기 위해서는, `UPROPERTY()` 매크로에도 `Config` 지정자를 붙여줘야 합니다.
UCLASS(Config=Game)
class AExampleClass : public AActor
{
GENERATED_UCLASS_BODY()
UPROPERTY(Config)
float ExampleVariable;
};
프로퍼티의 `Config` 지정자이네느 카테고리가 붙지 않습니다. `ExampleVariable` 프로퍼티는 이제 [환경설정 파일 구조](#파일계층구조) 내 모든 `Game` 환경설정 파일에서 읽을 수 있게 되었습니다.
정보 지정을 위한 문법은 다음과 같습니다:
[/Script/ModuleName.ExampleClass]
ExampleVariable=0.0f
### 환경설정 파일과 상속
`UCLASS` 와 `UPROPERTY` 의 `Config` 지정자는 상속됩니다. 즉 자손 클래스는 부모 클래스에서 `Config` 으로 지정된 모든 변수를 읽어들이고 저장할 수 있으며,
같은 환경설정 파일 카테고리에 있게 된다는 뜻입니다. 변수는 모두 자손 클래스 이름과 같은 섹션 타이틀 아래 있게 됩니다. 예를 들어 위 `ExampleClass` 를 상속하는
`ChildExampleClass` 에 대한 환경설정 파일 정보는 다음과 같을 것이며, 같은 `Game` 환경설정 파일에 저장될 것입니다.
[/Script/ModuleName.ChildExampleClass]
ExampleVariable=0.0f
### 인스턴스별 환경설정
언리얼 엔진 4 에는 오브젝트의 환경설정을 원하는 DefaultInput.ini에 저장할 수 있는 능력이 있습니다. `UCLASS` 매크로에 `PerObjectConfig` 지정자가 사용된 경우,
이 클래스에 대한 환경설정 정보가 인스턴스별로 저장되며, 각 인스턴스는 `.ini` 파일에 `[오브젝트명 클래스명]` 형식으로 오브젝트 이름을 딴 섹션을 갖습니다.
이 키워드는 자손 클래스에 전파됩니다.
## 환경설정 파일 구조
각 환경설정 카테고리는 별도의 파일 계층구조가 있어, 엔진 전용, 프로젝트 전용, 플랫폼 전용 환경설정을 나타냅니다.
### 환경설정 카테고리
* Compat
* DeviceProfiles
* Editor
* EditorGameAgnostic
* EditorKeyBindings
* EditorUserSettings
* Engine
* Game
* Input
* Lightmass
* Scalability
### 파일 계층구조
환경설정 파일 계층구조는 `Base.ini` 로 시작해서 읽어들이며, 계층구조의 나중 파일에 있는 값이 앞선 값을 덮어씁니다. `Engine` 폴더에 있는 모든 파일은
모든 프로젝트에 적용되는 반면, 프로젝트 전용 세팅은 해당 프로젝트 디렉토리에 있을 것입니다. 마지막으로, 모든 프로젝트 전용과 플랫폼 전용 사이의 차이점은 `[ProjectDirectory]/Saved/Config/[Platform]/[Category].ini` 파일에 저장됩니다.
아래 파일 계층구조 예제는 환경설정 파일의 `Engine` 카테고리에 대한 것입니다.
1. `Engine/Config/Base.ini`
[REGION:tip]
`Base.ini` 는 보통 비어있습니다.
[/REGION]
1. `Engine/Config/BaseEngine.ini`
1. `Engine/Config/[Platform]/[Platform]Engine.ini`
1. `[ProjectDirectory]/Config/DefaultEngine.ini`
1. `[ProjectDirectory]/Config/[Platform]/[Platform]Engine.ini`
1. `[ProjectDirectory]/Saved/Config/[Platform]/Engine.ini`
[REGION:tip]
`Saved` 디렉토리에 있는 환경설정 파일은 환경설정 파일 스택 내 프로젝트 전용과 플랫폼 전용 사이의 차이점만 저장합니다.
[/REGION]
## 환경설정 파일 작업하기
### 파일 포맷
#### 섹션 및 키-값 짝
전형적인 환경설정 파일은 키-값 짝들로 이루어진 섹션들로 구성되며, 그 배치는 다음과 같습니다:
[섹션]
키=값
#### 특수 문자
* *+* - 해당 프로퍼티가 (기존 환경설정 파일 또는 같은 환경설정 파일의 앞부분에) 존재하지 않는 경우 줄을 추가합니다.
* *-* - 줄을 제거합니다(만 정확히 일치해야 합니다).
* *.* - 새 프로퍼티를 추가합니다.
* *!* - 프로퍼티를 제거합니다만, 정확히 일치할 필요는 없으며, 프로퍼티 이름만 맞으면 됩니다.
[REGION:note]
**주**: *.* 는 중복된 줄이 추가될 수 있다는 점만 빼고 *+* 와 비슷합니다. (DefaultInput.ini 에서 보듯이) 바인딩에 유용한 것으로, 가장 아래쪽의 바인딩만 효력을 발휘합니다. 예를 들어 다음과 같은 경우:
[/Script/Engine.PlayerInput]
Bindings=(Name="Q",Command="Foo")
.Bindings=(Name="Q",Command="Bar")
.Bindings=(Name="Q",Command="Foo")
정상 작동합니다. *+* 를 사용했다면 마지막 줄의 추가는 실패하여 바인딩이 잘못될 것입니다. 환경설정 파일 합침으로 인해, 위의 사용 패턴이 발생할 수 있습니다.
[/REGION]
#### 코멘트
대부분의 사람들이 세미콜론은 환경설정 파일의 코멘트를 나타낸다는 인상을 받는 듯 하지만, 그렇지 않습니다 (`FConfigFile::ProcessInputFileContents` 에서 세미콜론이나 다른 스트링을 코멘트 구분자로 실제 처리하는 부분은 없습니다). 이는 의도된 동작입니다. 기술적으로는 어떠한 글자도 다른 키-값 짝을 나타낼 수 있습니다. 전형적으로는, 새 줄 처음에 세미콜론을 찍는 것으로 코멘트처럼 쓰긴 하지만, 실제로는 그렇지 않습니다.
; 이것은 코멘트입니다.
; 이것도요!