Visual Studio
emacser
« 2025/02 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
|
관리 메뉴
Visual Studio
Unreal C++ 관련 팁 모음 (UE5 기준) 본문
Game Engine
Unreal C++ 관련 팁 모음 (UE5 기준)
emacser
2024. 1. 16. 22:53
Unreal
- Unreal Object System
- UObject는 nullptr과 비교하지 않고 IsValid를 사용하여 검사한다.
- UObject를 상속받은 멤버 변수에 raw pointer 대신 TObjectPtr을 사용한다.
- TWeakObjectPtr는 Raw pointer보다 더 정확한 IsValid 체크를 할 수 있도록 도와준다. 해당 객체가 댕글링되면 nullptr로 세팅된다.
- Math 관련
- FVector, FMatrix, FBox, FBoxSphereBounds 등의 수학 클래스들은 기본 생성자에서 명시적으로 멤버 변수를 초기화해주지 않는다. 따라서 생성자 인자로 EForceInit::ForceInit을 넣거나 직접 값을 초기화 해주는 것을 권장한다.
- Package 관련
- Package Path: 해당 패키지가 '속한' 경로
- ex) 애셋 경로가 '/Game/SBXVS01/ExampleAsset.ExampleAsset' 이면 '/Game/SBXVS01'이 Package Path
- Package Name: 해당 패키지의 경로
- ex) 애셋 경로가 '/Game/SBXVS01/ExampleAsset.ExampleAsset' 이면 '/Game/SBXVS01/ExampleAsset'이 Package Name
- Package 경로 관련 자주 사용하는 함수들
- UObjectBaseUtility::GetPathName() (member function)
- FPackageName::ObjectPathToPackageName() (static function)
- FPackageName::LongPackageNameToFilename() (static function)
- FPackageName::FilenameToLongPackageName() (static function)
- FPackageName::GetLongPackagePath() (static function)
- FPackageName::GetLongPackageAssetName() (static function)
- 언리얼 시스템과 관련된 파일 확장자를 사용할 때는 'TEXT(".uasset")' 처럼 하드코딩하지 말고 아래 함수들을 적극 사용하자.
- FPackageName::GetAssetPackageExtension()
- FPackageName::GetMapPackageExtension()
- FPackageName::GetTextAssetPackageExtension()
- FPackageName::GetTextMapPackageExtension()
- FPackageName::IsPackageExtension()
- FPackageName::IsAssetPackageExtension()
- FPackageName::IsMapPackageExtension()
- FPackageName::IsTextPackageExtension()
- FPackageName::IsTextAssetPackageExtension()
- FPackageName::IsTextMapPackageExtension()
Slate
- 위젯 클래스만 정의되어 있거나 위젯 클래스가 핵심인 파일명에는 접두사 S를 붙인다.
- Construct에서 생성한 위젯을 직접 참조하는 변수를 검사할때는 check 구문을 사용하자. (invalid한 경우는 100% 프로그래머가 실수한 것이기 때문)
- 이외에도 프로그래머가 실수한 것이 아니면 invalid되는 것이 불가능한 경우는 check 구문을 사용한다. (버그를 빠르게 발견하기 위함.)
- VAlign, HAlign으로 원하는 위치에 위젯을 배치하는 것이 불가능한 경우 SSpacer를 활용하자.
- SBorder는 기본 Padding 값이 2.0 이므로 항상 명시적으로 Padding 값을 설정하는 것이 좋다.