블루프린트 라이브러리

SML 블루프린트 라이브러리 함수에 대한 가장 최신 정보는 소스 코드에 있는 헤더 파일입니다.

이 페이지는 실제로 사용 가능한 기능에 비해 뒤처질 수 있습니다.

SML은 다양한 유용한 블루프린트 함수 라이브러리와 일부 커스텀 K2 노드를 제공하여, 블루프린트에서 엔진, 새티스팩토리, 또는 모드 로더 자체와 쉽게 상호작용할 수 있게 합니다.

로깅

모드 로더는 블루프린트 로깅 라이브러리라는 블루프린트 함수 라이브러리를 제공하여 블루프린트에서 로깅 기능을 사용할 수 있게 합니다. 이를 통해 다양한 상세도 수준으로 메시지를 로깅할 수 있습니다.

출력은 SML 콘솔(설정에서 활성화된 경우)과 %LOCALAPPDATA%\FactoryGame\Saved\Logs 폴더의 FactoryGame.log에 표시됩니다.

C++에서 로깅하려는 경우, 언리얼의 기본 로깅 시스템을 사용하는 것을 추천합니다. 모드를 위한 자체 로그 범주를 만드는 것이 가장 좋습니다.

로깅에 대한 자세한 내용은 언리얼 엔진 문서와 로깅 페이지에서 확인할 수 있습니다.

LogVerbose(String str)

주어진 문자열을 "verbose" 레벨로 로깅합니다.

LogDisplay(String str)

주어진 문자열을 "display" 레벨로 로깅합니다.

LogWarning(String str)

주어진 문자열을 "warning" 레벨로 로깅합니다.

LogError(String str)

주어진 문자열을 "error" 레벨로 로깅합니다.

LogFatal(String str)

주어진 문자열을 "fatal" 레벨로 로깅합니다. 게임을 충돌시킵니다.

커스텀 K2 노드

배열 정렬

어떤 타입의 배열과 비교자 함수가 주어지면, 비교자 함수를 사용하여 어떤 요소가 다른 요소보다 크거나 작은지 판단하여 배열 요소를 제자리에서 정렬합니다.

배열 핀을 연결하면 함수 선택 드롭다운에 [Create a matching function] 옵션이 나타나며, 이를 선택하면 올바른 함수 시그니처를 가진 함수 스텁이 생성됩니다.

비교자 함수는 아이템 A가 아이템 B보다 "작을" 때 true를 반환해야 하며, 이는 A가 B보다 앞에 정렬된다는 의미입니다.

C‍+‍+에서 작업할 때는 이 노드 대신 TArray::StableSort를 사용하십시오.

후킹

BindOnBPFunction(const TSubclassOf<UObject> Class, FObjFunctionBind Binding, const FString FunctionName, bool HookOffsetStart)

블루프린트에서 구현된 함수에 이벤트를 바인딩할 수 있게 합니다.

HookOffsetStart는 이벤트가 후킹된 함수 전이나 후에 호출될지를 제어합니다.

구성

이 섹션은 SML 설정 시스템이 아직 개발 중일 때 작성되었습니다. 따라서 일부 내용이 오래되었으며, 여전히 작업 중입니다. 이 시스템을 사용하고 싶다면, 먼저 이 페이지를 읽어보시고, 질문이 있다면 디스코드에서 문의해 주십시오.

블루프린트 인터페이스는 블루프린트를 통해 설정을 저장하고 불러올 수 있는 기능도 제공합니다.

config로 어떤 종류의 맞춤 구조체든 전달할 수 있습니다. 하지만 다음 유형만 올바르게 파싱됩니다:

  • 문자열

  • 실수

  • 정수

  • 부울

  • 다른 구조체

  • 위에서 허용된 타입의 배열

모드의 모든 구성을 담으려면 맞춤 구조체를 만들어야 합니다 (고급 애셋 생성 > 블루프린트 > 구조체)

다음은 설정을 다시 로드하기 위해 호출할 수 있는 블루프린트 함수의 예시입니다. 이 함수는 단순히 로드된 설정 구조체를 반환하며, 값을 어떻게 사용할지는 함수를 호출하는 쪽에서 처리합니다. 변수 사용과 변수 와이어의 분리에 주목하십시오. 구조체 변수는 와이어를 재사용하는 대신 여러 번 읽습니다. 이는 의도적인 것으로, 와이어를 재사용하면 로드된 설정 값이 사용되지 않기 때문입니다. 이미지

void SaveConfig(String modid, Struct config)

주어진 설정 구조체를 Json으로 덤프하여 주어진 이름의 모드에 대한 설정 파일로 저장합니다. 새티스팩토리 설치 폴더의 configs 폴더에서 찾을 수 있습니다.

void LoadConfig(String modid, Struct& config)

주어진 모드 ID의 설정 파일을 전달된 설정 구조체의 속성으로 파싱합니다. 설정 구조체의 인스턴스를 포함하는 변수를 전달해야 합니다. 그러면 설정 파일에서 읽은 값으로 해당 인스턴스를 수정합니다. 각 속성의 기본값은 맞춤 구조체 정의에서 설정할 수 있습니다. 설정 파일에 없는 설정은 설정 구조체에서 수정되지 않은 채로 남습니다. 설정 구조체에 해당하는 속성이 없는 설정 파일의 설정은 단순히 무시됩니다.

void StructToJson(String& String, bool UsePrettyPropertyNames, Struct Structure)

주어진 구조체를 문자열로 변환하여 전달된 String 주소에 저장합니다. UsePrettyPropertyNames가 true면 속성 이름이 더 읽기 쉽게 표시됩니다.

SaveConfig 함수가 이를 자동으로 수행한다는 점에 유의하십시오.

void StructFromJson(String String, bool UsePrettyPropertyNames, Struct& Structure)

주어진 json String을 구조체로 변환합니다. StructToJson으로 json을 생성할 때 UsePrettyPropertyNames를 활성화했다면, 여기서도 활성화해야 합니다.

LoadConfig 함수가 이를 자동으로 수행한다는 점에 유의하십시오.

블루프린트 모드 로딩 라이브러리

블루프린트 모드 로딩 라이브러리는 모드 로딩 과정과 상호작용할 수 있는 함수를 제공합니다.

bool IsModLoaded(String ModReference)

이 함수는 모드 참조를 입력으로 받아 해당 참조를 가진 모드가 로드되었는지 확인합니다.

Array<String> GetLoadedMods()

이 함수는 현재 로드된 모드의 모드 참조를 배열로 반환합니다.

ModInfo GetLoadedModInfo(String ModReference)

이 함수를 통해 주어진 참조를 가진 모드에 대한 추가 정보에 접근할 수 있습니다.

Texture2D LoadModIconTexture(String ModReference, Texture2D FallbackIcon)

이 함수를 통해 주어진 참조를 가진 모드의 아이콘을 Texture2D로 로드할 수 있습니다. 텍스처나 모드를 찾을 수 없는 경우 폴백 아이콘을 반환합니다.

Version GetSMLVersion()

이 함수를 통해 현재 설치된 모드 로더의 버전을 확인할 수 있습니다.

bool IsDevelopmentModeEnabled()

이 함수를 통해 SML 개발 모드가 활성화되어 있는지 쉽게 확인할 수 있습니다.

Map<Name, String> GetExtraModLoaderAttributes()

모드 로더 구현에서 노출한 추가 속성을 반환합니다.

버전 라이브러리

블루프린트 버전 라이브러리는 버전 시스템과 더 쉽게 상호작용할 수 있게 해주는 몇 가지 함수를 제공하고 일반적으로 도움이 되는 기능을 제공합니다.

bool ParseVersionString(String String, out Version OutVersion, out String ErrorMessage)

이 함수는 제공된 문자열에서 FVersion 객체를 만들려고 시도합니다. 문자열을 성공적으로 변환할 수 있으면 true를 반환하고, 그렇지 않으면 ErrorMessage를 설정합니다.

String Conv_VersionToString(FVersion Version)

주어진 버전 구조체를 문자열로 변환합니다.

bool ParseVersionRangeString(String String, out VersionRange OutVersionRange, out String OutErrorMessage)

주어진 문자열을 Version Range 구조체로 변환하려고 시도합니다. 변환할 수 있으면 true를 반환하고, 그렇지 않으면 오류 메시지를 설정합니다.

String Conv_VersionRangeToString(FVersionRange VersionRange)

주어진 버전 범위 구조체를 문자열로 변환합니다.

bool Matches(VersionRange VersionRange, Version Version)

주어진 버전이 주어진 버전 범위와 일치하면 true를 반환합니다.

FVersion

이 구조체는 파싱된 상태의 SemVer 호환 버전 정보를 포함합니다.

멤버 필드

  • int64 Major (읽기 전용)

    주요 SemVer 버전 번호

  • int64 Minor (읽기 전용)

    부 SemVer 버전 번호

  • int64 Patch (읽기 전용)

    패치 SemVer 버전 번호

  • String Type (읽기 전용)

    이 SemVer 버전의 버전 유형입니다.

    다음 중 하나일 수 있습니다:

    • "alpha"

    • "beta"

    • "release"

  • String BuildInfo (읽기 전용)

    버전 빌드에 대한 추가 정보입니다.

FModInfo

이 구조체는 로드된 모드에 대한 정보를 포함합니다. 주로 모드의 uplugin의 내용입니다.

멤버 필드

  • String ModId (읽기 전용)

    모드 참조입니다.

  • String Name (읽기 전용)

    모드의 표시 이름입니다.

  • FVersion Version (읽기 전용)

    모드의 버전입니다.

  • String Description (읽기 전용)

    모드에 대한 설명입니다.

  • Array<String> Authors (읽기 전용)

    모드의 작성자 이름 목록입니다.

  • String Credits (읽기 전용)

    모드의 크레딧입니다.

블루프린트 반영 라이브러리

블루프린트 반영 라이브러리는 언리얼 반영 시스템에서 블루프린트와 상호작용할 수 있는 몇 가지 함수를 제공합니다.

ReflectedObject ReflectObject(Object Object)

주어진 객체에 대한 반영된 객체 래퍼를 할당합니다.

ReflectObject ReflectStruct(DynamicStructInfo StructInfo)

주어진 구조체에 대한 반영된 객체 래퍼를 할당합니다.

Object DeflectObject(ReflectedObject ReflectedObject)

반영된 객체 래퍼를 원시 객체 포인터로 반영합니다.

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)

주어진 반영된 객체의 구조체 속성 값을 주어진 새 값으로 업데이트합니다.

ReflectedEnumValue GetEnumProperty(ReflectedObject ReflectedObject, String PropertyName, int ArrayIndex)

주어진 반영된 객체의 열거 속성 값을 검색합니다.

void SetEnumProperty(ReflectedObject ReflectedObject, String PropertyName, ReflectedEnumValue Value, int ArrayIndex)

주어진 반영된 객체의 열거 속성 값을 주어진 새 값으로 업데이트합니다.

ReflectedObject

반영된 객체를 설명합니다.

ReflectedEnumValue

반영된 열거형 값을 설명합니다.

Enum EnumerationType

열거형의 언리얼 유형입니다.

int64 RawEnumValue

열거형 값을 원시 정수로 표현합니다.

Reflected Property Info

블루프린트에서 접근할 수 있는 단일 반영된 속성을 설명합니다.

Name PropertyName

속성의 이름입니다.

ReflectedPropertyType PropertyType

반영된 속성의 유형입니다.

int32 ArrayDim

고정된 크기 속성 배열의 차원입니다.

ReflectedPropertyType

반영된 속성의 유형을 설명하는 열거형입니다.

  • Invalid

  • Byte

  • Int

  • Int64

  • Float

  • String

  • Boolean

  • Name

  • Text

  • Struct

  • Object

  • Enum