블루프린트 라이브러리
SML 블루프린트 라이브러리 함수에 대한 가장 최신 정보는 소스 코드에 있는 헤더 파일입니다. 이 페이지는 실제로 사용 가능한 기능에 비해 뒤처질 수 있습니다. |
SML은 다양한 유용한 블루프린트 함수 라이브러리와 일부 커스텀 K2 노드를 제공하여, 블루프린트에서 엔진, 새티스팩토리, 또는 모드 로더 자체와 쉽게 상호작용할 수 있게 합니다.
로깅
모드 로더는 블루프린트 로깅 라이브러리
라는 블루프린트 함수 라이브러리를 제공하여
블루프린트에서 로깅 기능을 사용할 수 있게 합니다.
이를 통해 다양한 상세도 수준으로 메시지를 로깅할 수 있습니다.
출력은 SML 콘솔(설정에서 활성화된 경우)과
%LOCALAPPDATA%\FactoryGame\Saved\Logs
폴더의 FactoryGame.log
에 표시됩니다.
C++에서 로깅하려는 경우, 언리얼의 기본 로깅 시스템을 사용하는 것을 추천합니다. 모드를 위한 자체 로그 범주를 만드는 것이 가장 좋습니다.
로깅에 대한 자세한 내용은 언리얼 엔진 문서와 로깅 페이지에서 확인할 수 있습니다.
커스텀 K2 노드
배열 정렬
어떤 타입의 배열과 비교자 함수가 주어지면, 비교자 함수를 사용하여 어떤 요소가 다른 요소보다 크거나 작은지 판단하여 배열 요소를 제자리에서 정렬합니다.
배열 핀을 연결하면 함수 선택 드롭다운에 [Create a matching function]
옵션이 나타나며, 이를 선택하면 올바른 함수 시그니처를 가진 함수 스텁이 생성됩니다.
비교자 함수는 아이템 A가 아이템 B보다 "작을" 때 true
를 반환해야 하며,
이는 A가 B보다 앞에 정렬된다는 의미입니다.
C++에서 작업할 때는 이 노드 대신 TArray::StableSort
를 사용하십시오.
구성
이 섹션은 SML 설정 시스템이 아직 개발 중일 때 작성되었습니다. 따라서 일부 내용이 오래되었으며, 여전히 작업 중입니다. 이 시스템을 사용하고 싶다면, 먼저 이 페이지를 읽어보시고, 질문이 있다면 디스코드에서 문의해 주십시오. |
블루프린트 인터페이스는 블루프린트를 통해 설정을 저장하고 불러올 수 있는 기능도 제공합니다.
config
로 어떤 종류의 맞춤 구조체든 전달할 수 있습니다.
하지만 다음 유형만 올바르게 파싱됩니다:
-
문자열
-
실수
-
정수
-
부울
-
다른 구조체
-
위에서 허용된 타입의 배열
모드의 모든 구성을 담으려면 맞춤 구조체를 만들어야 합니다 (고급 애셋 생성 > 블루프린트 > 구조체)
다음은 설정을 다시 로드하기 위해 호출할 수 있는 블루프린트 함수의 예시입니다.
이 함수는 단순히 로드된 설정 구조체를 반환하며, 값을 어떻게 사용할지는
함수를 호출하는 쪽에서 처리합니다.
변수 사용과 변수 와이어의 분리에 주목하십시오.
구조체 변수는 와이어를 재사용하는 대신 여러 번 읽습니다.
이는 의도적인 것으로, 와이어를 재사용하면 로드된 설정 값이 사용되지 않기 때문입니다.
void SaveConfig(String modid, Struct config)
주어진 설정 구조체를 Json으로 덤프하여 주어진 이름의 모드에 대한 설정 파일로 저장합니다.
새티스팩토리 설치 폴더의 configs
폴더에서 찾을 수 있습니다.
void LoadConfig(String modid, Struct& config)
주어진 모드 ID의 설정 파일을 전달된 설정 구조체의 속성으로 파싱합니다. 설정 구조체의 인스턴스를 포함하는 변수를 전달해야 합니다. 그러면 설정 파일에서 읽은 값으로 해당 인스턴스를 수정합니다. 각 속성의 기본값은 맞춤 구조체 정의에서 설정할 수 있습니다. 설정 파일에 없는 설정은 설정 구조체에서 수정되지 않은 채로 남습니다. 설정 구조체에 해당하는 속성이 없는 설정 파일의 설정은 단순히 무시됩니다.
블루프린트 모드 로딩 라이브러리
블루프린트 모드 로딩 라이브러리
는 모드 로딩 과정과 상호작용할 수 있는 함수를 제공합니다.
bool IsModLoaded(String ModReference)
이 함수는 모드 참조를 입력으로 받아 해당 참조를 가진 모드가 로드되었는지 확인합니다.
Array<String> GetLoadedMods()
이 함수는 현재 로드된 모드의 모드 참조를 배열로 반환합니다.
버전 라이브러리
블루프린트 버전 라이브러리
는 버전 시스템과 더 쉽게 상호작용할 수 있게 해주는 몇 가지 함수를 제공하고 일반적으로 도움이 되는 기능을 제공합니다.
bool ParseVersionString(String String, out Version OutVersion, out String ErrorMessage)
이 함수는 제공된 문자열에서 FVersion 객체를 만들려고 시도합니다. 문자열을 성공적으로 변환할 수 있으면 true를 반환하고, 그렇지 않으면 ErrorMessage를 설정합니다.
FVersion
이 구조체는 파싱된 상태의 SemVer 호환 버전 정보를 포함합니다.
FModInfo
이 구조체는 로드된 모드에 대한 정보를 포함합니다. 주로 모드의 uplugin의 내용입니다.
멤버 필드
-
String ModId (읽기 전용)
모드 참조입니다.
-
String Name (읽기 전용)
모드의 표시 이름입니다.
-
FVersion Version (읽기 전용)
모드의 버전입니다.
-
String Description (읽기 전용)
모드에 대한 설명입니다.
-
Array<String> Authors (읽기 전용)
모드의 작성자 이름 목록입니다.
-
String Credits (읽기 전용)
모드의 크레딧입니다.
블루프린트 반영 라이브러리
블루프린트 반영 라이브러리
는 언리얼 반영 시스템에서 블루프린트와 상호작용할 수 있는 몇 가지 함수를 제공합니다.
void DeflectStruct(ReflectedObject ReflectedObject, out DynamicStructInfo StructInfo)
반영된 객체 래퍼를 전달된 struct out 변수로 반영합니다.
Array<ReflectedPropertyInfo> GetReflectedProperties(ReflectedObject ReflectedObject)
주어진 객체에서 제공하는 반영된 속성 목록을 반환합니다.
uint8 GetByteProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 바이트 속성 값을 검색합니다.
void SetByteProperty(ReflectedObject ReflectedObject, String PropertyName, uint8 Value, int ArrayIndex)
주어진 반영된 객체의 바이트 속성 값을 업데이트합니다.
int64 GetInt64Property(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 64비트 정수 속성 값을 검색합니다.
void SetInt64Property(ReflectedObject ReflectedObject, String PropertyName, int64 Value, int ArrayIndex)
주어진 반영된 객체의 64비트 정수 속성 값을 주어진 새 값으로 업데이트합니다.
int32 GetInt32Property(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 32비트 정수 속성 값을 검색합니다.
void SetInt32Property(ReflectedObject ReflectedObject, String PropertyName, int32 Value, int ArrayIndex)
주어진 반영된 객체의 32비트 정수 속성 값을 주어진 새 값으로 업데이트합니다.
float GetFloatProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 부동 속성 값을 검색합니다.
void SetFloatProperty(ReflectedObject ReflectedObject, String PropertyName, float Value, int ArrayIndex)
주어진 반영된 객체의 부동 속성 값을 주어진 새 값으로 업데이트합니다.
String GetStringProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 문자열 속성 값을 검색합니다.
void SetStringProperty(ReflectedObject ReflectedObject, String PropertyName, String Value, int ArrayIndex)
주어진 반영된 객체의 문자열 속성 값을 주어진 새 값으로 업데이트합니다.
bool GetBoolProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 부울 속성 값을 검색합니다.
void SetBoolProperty(ReflectedObject ReflectedObject, String PropertyName, bool Value, int ArrayIndex)
주어진 반영된 객체의 부울 속성 값을 주어진 새 값으로 업데이트합니다.
Name GetNameProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 이름 속성 값을 검색합니다.
void SetNameProperty(ReflectedObject ReflectedObject, String PropertyName, Name Name, int ArrayIndex)
주어진 반영된 객체의 이름 속성 값을 주어진 새 값으로 업데이트합니다.
Text GetTextProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 텍스트 속성 값을 검색합니다.
void SetTextProperty(ReflectedObject ReflectedObject, String PropertyName, Text Text, int ArrayIndex)
주어진 반영된 객체의 텍스트 속성 값을 주어진 새 값으로 업데이트합니다.
Object GetObjectProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 객체 속성 값을 검색합니다.
void SetObjectProperty(ReflectedObject ReflectedObject, String PropertyName, Object Object, int ArrayIndex)
주어진 반영된 객체의 객체 속성 값을 주어진 새 값으로 업데이트합니다.
FReflectedObject GetStructProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)
주어진 반영된 객체의 구조체 속성 값을 검색합니다.
void SetStructProperty(ReflectedObject ReflectedObject, String PropertyName, FReflectedObject Struct, int ArrayIndex)
주어진 반영된 객체의 구조체 속성 값을 주어진 새 값으로 업데이트합니다.