일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- moreeffectiveC++
- 자료구조
- UELOG
- UE_LOG
- UML관련
- map
- C++최적화
- 스마트포인터
- 람다
- enumasByue
- BFS
- 선택정렬
- 람다사용정렬
- 언리얼엔진구조체
- 약참조
- 언리얼가비지컬렉터
- unorder_map
- 데이터애셋
- stl
- UE4 커스텀로그
- 프로그래머스
- 알고리즘
- C++
- 애셋로드
- 정렬
- 델리게이트
- 강참조
- 크리티컬섹션
- 정렬알고리즘
- dataasset
- Today
- Total
목록UnrealEngine/UE4 - CPP (28)
기억을 위한 기록들
이전에 std의 정규표현식에 관해 글을 작성하고, 언리얼에서 제공하는 정규표현식을 찾아보았다. https://hyo-ue4study.tistory.com/613 [CPP] C++ 정규 표현식 (regex / regular expression)에 관하여 C++ 11부터 포함된 정규 표현식( regular expression )이라는 라이브러리가 존재합니다. 정규표현식이란 문자열에서 특정 패턴을 찾거나 혹은 매치시키기 위해 사용되는 문자열의 표현으로, 헤더 파일 hyo-ue4study.tistory.com 언리얼엔진에서 정규표현식 관련된 클래스가 정의 되어 있다. FRegexPattern 이라는 클래스로 엔진 경로 "UE_5.2\Engine\Source\Runtime\Core\Public\Internatio..
using FStringFormatArgs = TMap; int itemnumber = 2; FStringFormatArgs args; args.Emplace( TEXT("0"), itemnumber); FString result = FString::Format(TEXT("item number is : {0}."), args); 나중에 사용할때 헷갈릴까 적어놓기... 근데 결국엔 FString::Format 함수 안을 보면 금방 확인할수 있다.
어떤 플러그인을 뒤져보다가 발견하게 되서 나중에 써먹기 위해 까먹을까봐 적음. ex)(언리얼엔진 클래라는 베이스 자세한건 생략) Parent 클래스에서 AvailableItem이라는 함수가 있다. 해당 함수안에 unimplemented(); 매크로가 선언되어 있다. 만약이 함수를 상속받는 클래스에서 해당 함수를 호출하지 않게되면 unimplemented(); 에서 check가 걸리게 된다. class Parent { UFUNCTION(BlueprintNativeEvent, Category = "Item") bool AvailableItem(); }; //.cpp bool Parent::AvailableItem__Implementation() { unimplemented(); //자식클래스에서 해당 함수 ..
enum 선언 예 UENUM(Meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EItemGradeInfo { // 일반 아이템 Common , // 레어 아이템 Rare , // 레전드 라이템 Legend, }; ENUM_CLASS_FLAGS(EItemGradeInfo); 사용 할 곳 예 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (Bitmask, BitmaskEnum = "EItemGradeInfo")) uint8ItemGradeInfo = 0; void DoSomething(const EItemGradeInfo info) { if(EItemGradeInfo::Comm..
* 언리얼 엔진 4 공식문서 참고하여 정리했습니다. https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/Assets/ReferencingAssets/ 애셋 참조 docs.unrealengine.com 언리얼 엔진 4에서는 애셋이 참조되는 방법과 메모리에 로드되는 방법을 제어하는 수많은 메커니즘을 제어한다. 레퍼런스는 2가지 방식으로 Strong Reference(강 참조)와 Weak Reference(약 참조)가 있다. - 강 참조는 A오브젝트가 B오브젝트를 참조하여 A로드시 B가 로드되게 하는 방식이다. - 약 참조는 경로(Path)같은 문자열 형태의 간점 메커니즘을 통해 A오브젝트가 B오브젝트를 참조하게 만들..
Csv - 훨씬 더 가볍고, 용량이 작다. - 단순한 데이터에 대해 더 나은 가독성 제공 - 복잡도는 낮지만, 많은 정보를 포함하는 매우 큰 데이터는 잘작동 - 추가/삭제/수정이 엑셀로 할 수 있어서 쉬움 Json - 반대로 더 나은 다용성과 확장성 제공 - 중첩된 정보, 계층적 데이터를 사용하는 복잡한 데이터에서는 읽기 쉬움 ( 퀘스트 시스템/다이얼로그 시스템 같은) - 쉼표 하나 잘못해도 데이터가 제대로 읽히지 않을 수 있음.
해당 문법이 뭔가 싶어서 찾아보니 C++의 std::function으로 생각하면 될것같다. 언리얼에서 람다를 다루면서 std::function대신 사용가능한게 TFunctionRef이다. https://hyo-ue4study.tistory.com/439 [CPP]std::function에 관하여 헤더 파일에 정의된 std::function 템플릿을 이용하면 1. 함수를 가리키는 타입(함수 포인터) 2. 함수 객체 3. 람다 표현식 세개를 비롯하여 호출 가능한 모든 대상을 가리키는 타입을 생성할 수 있다. hyo-ue4study.tistory.com https://benui.ca/unreal/tfunctionref/ Lambdas with TFunctionRef Unreal-style lambda func..
*언리얼엔진4 문서 참조하여 작성 https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/Assets/AsyncLoading/ 비동기 애셋 로딩 실행시간에 애셋을 로드/언로드하는 메서드입니다. docs.unrealengine.com 애셋 데이터를 참조하고 요청 시 로드하는 데 사용할 수 있는 일반적인 방법에는 두 가지가 있습니다. FSoftObjectPath와 TSoftObjectPtr 아티스트나 디자이너가 애셋을 참조하도록 하는 가장 쉬운 방법은 하드 포인터의 UPROPERTY를 만들고 카테고리를 지정하는 것이다. UE4에서 애셋을 참조하는 하드 UObject 포인터 UPROPERTY을 가지고 있다면, 그 애셋은 ..
TMap이란? - 키(key)와 값(value)을 짝으로 데이터를 저장. - 키를 검색하여 값을 얻을 수 있다. Add함수 map에 추가하기는 Add함수와 key,value를 이어서 입력해준다. Add는 키의 고유성을 보장하고, 중복된 키로 입력하게 되면 value만 변경된다. 실수해서 Add뒤에 key만 입력했다면 value는 자료형에 맞는 기본값으로 설정된다. Append 함수 해당 함수를 이용하면 다른맵에서 모든 엘리먼트를 삽입시켜 병합하는 것 역시도 가능. 기존 맵에 같은 key가 있다면 value가 대체된다. 언리얼 매크로 TMap 에 UPROPERTY 매크로와 편집가능 키워드 (EditAnywhere, EditDefaultsOnly, EditInstanceOnly) 중 하나를 마킹하면, 언리얼..
FHITResult는 충돌 지점(point of impact) 및 해당 point의 표면(surface) normal과 같은 trace의 한 번의 hit 정보를 포함하는 구조체입니다. /** * Structure containing information about one hit of a trace, such as point of impact and surface normal at that point. */ USTRUCT(BlueprintType, meta = (HasNativeBreak = "Engine.GameplayStatics.BreakHitResult", HasNativeMake = "Engine.GameplayStatics.MakeHitResult")) struct ENGINE_API FHitR..
FString uuid = FPlatformMisc::GetHashedMacAddressString(); UE_LOG( LogTemp, Warning, TEXT("uuid is %s"),*uuid ); //TEMP TArray macAddress = FWindowsPlatformMisc::GetMacAddress(); for( auto value : macAddress ) { UE_LOG( LogTemp, Warning, TEXT( "macAddress is %d" ), value ); }
// cm/s const float centimeterPerSecond = GetVelocity().Size(); // GetSpeed // Km/h const float KilometersPerHour = centimeterPerSecond * 0.036f; // M/s const float MeterPerSeconds = centimeterPerSecond * 0.0036f; const float IwantSpeedKMh = 10.0f; const float changeTouunit = IwantSpeedKMh / 0.036; //1 Unreal Unit = 1cm