일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 데이터애셋
- 람다
- 자료구조
- moreeffectiveC++
- 애셋로드
- 강참조
- 알고리즘
- 언리얼가비지컬렉터
- UE4 커스텀로그
- unorder_map
- UML관련
- 크리티컬섹션
- 정렬
- 람다사용정렬
- 정렬알고리즘
- 선택정렬
- UE_LOG
- 프로그래머스
- UELOG
- 스마트포인터
- BFS
- stl
- 약참조
- C++
- dataasset
- 언리얼엔진구조체
- 델리게이트
- C++최적화
- map
- enumasByue
- Today
- Total
목록UnrealEngine/UnrealEngine C++ 관련 (10)
기억을 위한 기록들
(해당 정보는 대부분 웹 서칭을 통해 찾아보고 나중에 제가 혼자 참고하려고 정리해보고 있습니다.) 렌더링 프로세스에 대해 Game thread(게임 스레드)에서 Slate Tick은 프레임당 두 번 위젯 트리를 탐색.1번 틱 :Prepass 트리를 아래->위로 탐색하여 각 위젯의 이상적인 크기( DesiredSize )를 계산.2번 틱: OnPaint 트리를 위->아래로 탐색하여 렌더링에 필요한 Draw Elements 를 계산. Render Thread에서 Slate 렌더링은 두 단계로 나뉜다.1. Widget Render: UI의 RTT를 수행합니다. Retainer Box를 사용하는 경우 Draw Elements는 Retainer Box의 Rtain Target에 렌더링됩니다.2. Slate R..
https://en.cppreference.com/w/cpp/utility/tuple/tie std::tie - cppreference.com template std::tuple tie( Types&... args ) noexcept; (since C++11) (until C++14) template constexpr std::tuple tie( Types&... args ) noexcept; (since C++14) Creates a tuple of lvalue references to its arguments or instanc en.cppreference.com 언리얼엔진 C++에서의 tie 함수 사용예) TTuple AMyActor:..
// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Components/ActorComponent.h" #include "HealthManageComponent.generated.h" DECLARE_MULTICAST_DELEGATE_OneParam(FUpdateHealthPoint, int); DECLARE_MULTICAST_DELEGATE_OneParam(FAddtiveHealthPoint, int); DECLARE_MULTICAST_DELEGATE_OneParam(FMinusHealthPoint, int); DECLARE_MUL..
TMap이나 TSet등에 다양한 데이터 값을 저장하려고 할때, Key로 사용되는 값을 넣는다. 그 중에서 Key로 FStruct 로 하고싶다면 추가해야할 함수가 있다. MyStruct라는 구조체가 있다고 치자. struct FMyStruct { private: int SomeIntData=0; public: FMyStruct(); ~FMyStruct(); }; 이 구조체를 Key로 사용하려고 한 다면 2개의 함수를 추가 해주면 된다. 바로 비교(==) 연산자와 GetTypeHash 함수라는 전역 함수의 파라미터 FMyStruct 이다. struct FMyStruct { private: int SomeIntData=0; public: FMyStruct(); ~FMyStruct(); //Override th..
코드를 작성하다보면 flaot 소숫점 비교를 자주 하게 되는데, 습관적으로 == 연산자를 사용하게 된다. 대부분~~(정말?) 괜찮을 수 도 있긴하지만, 정밀도가 떨어진다. 같은 변수 2개의 각각 1.0이 있다고 해서 같은수라는 보장이 없다. (ex 변수 2개가 각각 내부에서 1.0000004 / 1.0000006 이렇게 되어있다면 같은 값이 아니다.) float a = 3.0f; float b = 3.0f; if( a == b ) //이렇게 하지말고 { //Do Something } 그래서 단순 == 연산자로 비교하지 말고, 언리얼에서 제공 하는 함수를 이용한다고 하면 float a = 3.0f; float b = 3.0f; if(true == FMath::IsNearlyEqual(a, b)) //이렇게..
// 헤더 파일에 다음을 추가합니다. #include "Engine/BlueprintGeneratedClass.h" // 액터 포인터를 받아들이는 함수를 만듭니다. bool IsActorBlueprint(AActor* Actor) { if (!Actor) return false; // UClass 개체를 가져옵니다. UClass* ActorClass = Actor->GetClass(); // UClass 개체가 BlueprintGeneratedClass인지 검사합니다. // BlueprintGeneratedClass는 블루프린트 클래스를 나타냅니다. if (ActorClass->IsChildOf(UBlueprintGeneratedClass::StaticClass())) { return true; // 블..
언리얼엔진 Game Ability System이란? 게임 내에서 캐릭터나 오브젝트의 능력을 정의하고 관리하는 시스템입니다. 이 시스템은 게임의 캐릭터나 아이템 등의 능력을 모델링하고 관리하며, 이들 능력을 조작하고 적용하는 방법을 제공합니다. Game Ability System은 일반적으로 세 가지 구성 요소로 구성됩니다. 첫째, 능력은 능력 구성 요소와 실행 구성 요소로 구성됩니다. 능력 구성 요소는 능력의 속성, 발동 조건, 지속 시간 등을 정의하고, 실행 구성 요소는 능력이 실행될 때 수행할 작업을 정의합니다. 둘째, 능력 시스템은 능력을 트리거하는 행위자와 대상을 식별하는 능력 시스템 트리거 구성 요소를 포함합니다. 마지막으로 능력 시스템은 능력이 적용될 때 발생하는 이벤트를 처리하는 능력 시스템..
A 라는 이름의 c++ 클래스를 사용하고 있을때, 이름을 B로 바꾸는건 코드에서는 크게 어렵지 않습니다…그런데 문제는 A 라는 클래스를 블루프린트에서 BP_A 라는 애셋이 상속받는 경우가 있는데, 코드에서 클래스 이름을 B로 바꿀 경우 BP_A가 깨져서 안열릴수도 있습니다. 그럴경우 Config/DefaultEngine.ini 파일에서 1[/Script/Engine.Engine] ActiveClassRedirects=(OldClassName="/Script/.",NewClassName="/Script/.") 위와 같은 양식으로 추가해주면되는데, 예를 들어 World 프로젝트에서 A클래스 이름을 B로 바꿀 경우, [/Script/Engine.Engine] ActiveClassRedirects=(OldCla..
// assert 는 DO_CHECK = 1 일때만 실행 // check 는 false 값이면 실행을 중지 check(Mesh != nullptr); checkf(MyPtr, TEXT("MyPtr is nullptr")); // false 이면 로그 출력 checkcodeMyPtr, TEXT("MyPtr is nullptr")); // checkf 와 비슷 checkNoEntry(); // 절대 실행될 리 없는 경로 표시 checkNoReentry(); // 호출 완료 전까지 다시 호출되면 안되는 경우 체크 checkNoRecursion(); // checkNoReentry() 와 동일 unimplemented(); // 반드시 재정의해야 하는 가상 함수를 표시하기 위해 사용 // verify 는 DO_..
https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Delegates/ 먼저 Delegate의 사전적 의미로는 "대리자 혹은 위임자" 라는 뜻이 있다. 델리게이트설명 : Delegate (델리게이트)로 C++ 오브젝트 상의 멤버 함수 호출을 일반적이고 유형적으로 안전한 방식으로 할 수 있습니다. 델리게이트를 사용하여 임의 오브젝트의 멤버 함수에 동적으로 바인딩시킬 수 있으며, 그런 다음 그 오브젝트에서 함수를 호출할 수 있습니다. 호출하는 곳에서 오브젝트의 유형을 몰라도 말이지요.델리게이트 오브젝트는 복사해도 완벽히 안전하다.델리게이트는 값으로 전달 가능하나 보통 추천할 만 ..