'프로그래밍/언리얼엔진'에 해당하는 글 16건

- Delegate

특정 객체가 해야 할 로직을 다른 객체가 대신 처리할 수 있도록 만드는 보편적인 설계의 개념

 

언리얼 Delegate

- C++ 객체에서만 사용할 수 있는 Delegate와 C++/블루프린트 객체가 모두 사용할 수 있는 Delegate로 나뉜다.

블루프린트는 멤버 함수에 대한 정보를 저장하고 로딩하는 Serialization 메커니즘이 적용되어 있다.

블루프린트와 관련된 C++ 함수는 모두 UFUNCTION 매크로를 사용해야 한다.

 

C++/블루프린트에 같이 사용할 수 있는 Delegate를 Dynamic Delegate라 한다.

 


WRITTEN BY
KeithHong
개인 기록 공간입니다. 잘못된 정보에 대한 수정 및 조언은 항상 감사합니다 ( _ _ )

,

- 언리얼 엔진에서 지정한 문법

언리얼 헤더 툴에 의해 분석되며 UPROPERTY로 선언된 변수를 분석하여 generated라는 이름의 추가 코드를 생성한다.

언리얼 헤더 툴에서 생성하는 코드는 Intermediate 폴더에 저장되며, 헤더의 내용이 변경될 때 자동 생성어 덮어쓰므로 코드를 열어 수정하는 것은 무의미하다.

 

UPROPERTY() 지정된 변수는 GC에 의한 삭제가 일어나지 않는다.

UObject는 사용하지 않으면 GC에 의해 자동 정리가 일어나는데

UPROPERTY() 지정된 변수는 변수를 담고 있는 클래스의 라이프 사이클을 따라간다.

class UTestObject

class UGameInstance
{
	UTestObject* pObject;
}

UGameInstance::UGameInstance()
{
	pObject = NewObject<UTestObject>();
}
// 위의 pObject 는 GC에 의해 사용하지 않는 타이밍에 제거됨.

 

UPROPERTY Option

Meta = (AllowPrivateAccess=true)  --> 코드상에서는 private 이지만 Editor 상에서 접근 가능하게 해주는 옵션

 

EditAnywhere 과 VisibleAnywhere??

DefaultsOnly와 InstanceOnly로 구분이 가능하다.

DefaultsOnly : 클래스의 기본값을 담당하는 블루프린트 편집 화면에서만 보인다.

InstanceOnly : 인스턴스의 속성을 보여주는 에디터 뷰포트에서만 보인다.

'프로그래밍 > 언리얼엔진' 카테고리의 다른 글

[UE4] 나만의 UAsset을 만들어보자 - 1  (0) 2020.09.10
[UE4] Delegate  (0) 2020.03.09
[UE4] Log 남기기  (0) 2020.02.23
[UE4] 비동기 로딩(RequestAsyncLoad)  (0) 2020.02.23
[UE4] 언리얼에서 EnumFlags 사용하기  (0) 2020.02.16

WRITTEN BY
KeithHong
개인 기록 공간입니다. 잘못된 정보에 대한 수정 및 조언은 항상 감사합니다 ( _ _ )

,

------------------ 게임 Screen에 출력되는 Log

GEngine

GEngine->AddOnScreenDebugMessage(-1, 3.f, FColor::Yellow, TEXT("ACampfire BeginPlay"));

Constructor에서 GEngine을 사용하는 경우 Crash의 원인이 될 수 있으므로 사용하지 않도록 하자 혹은 Null Check 후 사용할 것

GEngine->AddOnScreenDebugMessage(-1, 3.f, FColor::Yellow, (TEXT("String = %s"), FString(“VALUE”));

GEngine->AddOnScreenDebugMessage(-1, 3.f, FColor::Red, *FString::Printf(TEXT("HELLO %f"), float));

 

UKistmetSystemLibrary::PrintString

Debug :: %s / %f 사용 예제

 

------------------ 출력창에 표시되는 Log

UE_LOG

UE_LOG(LogTemp, Log, TEXT("Base Anim BP is not available for using")); 


WRITTEN BY
KeithHong
개인 기록 공간입니다. 잘못된 정보에 대한 수정 및 조언은 항상 감사합니다 ( _ _ )

,

BP의 애셋 비동기 로드 함수

 

C++ : FSoftObjectPath를 통해 필요한 Asset을 Load하는 방법

StreamableManager의 RequestAsyncLaod 활용법 -1
StreamableHandle에 LoadedAsset에 대한 정보가 있다.


DefaultEngine.ini 에 세팅된 값에 대한 Load 요청하는 방법

 

/Script/IslandSurvivor.IS_PlayerController =>>

IslandSurvivor의 IS_PlayerController에 있는 TArray<FStringAssetRefrence>CharacterAssets 배열에 + 된 Path를 등록하는 것.

 

// 결과

'프로그래밍 > 언리얼엔진' 카테고리의 다른 글

[UE4] Delegate  (0) 2020.03.09
[UE4] UPROPERTY 매크로  (0) 2020.03.08
[UE4] Log 남기기  (0) 2020.02.23
[UE4] 언리얼에서 EnumFlags 사용하기  (0) 2020.02.16
[UE4] 가비지 콜랙터(Garbage Collector)  (0) 2020.02.15

WRITTEN BY
KeithHong
개인 기록 공간입니다. 잘못된 정보에 대한 수정 및 조언은 항상 감사합니다 ( _ _ )

,
  • EnumFlags를 사용하여 여러 옵션을 조합해서 사용하고자 할때 사용가능한 Flags

EnumFlags 로 사용하기 위한 클래스 세팅

 

Member 변수
사용 예시

 

위 테스트 코드의 결과 

 

'프로그래밍 > 언리얼엔진' 카테고리의 다른 글

[UE4] Delegate  (0) 2020.03.09
[UE4] UPROPERTY 매크로  (0) 2020.03.08
[UE4] Log 남기기  (0) 2020.02.23
[UE4] 비동기 로딩(RequestAsyncLoad)  (0) 2020.02.23
[UE4] 가비지 콜랙터(Garbage Collector)  (0) 2020.02.15

WRITTEN BY
KeithHong
개인 기록 공간입니다. 잘못된 정보에 대한 수정 및 조언은 항상 감사합니다 ( _ _ )

,

#GC

 UPROPERTY 키워드가 없는 UObject의 경우 GC 에 의해 임의의 순간에 정리된다.

Garbage Collector에 의한 자동 소멸 방지

 

1. UPROPERTY 키워드를 사용하여 해당 UObject를 멤버로 참조하고 있는 UClass 가 Destroy 될 때 GC 에 의한 정리 되도록 한다.

2. GC 사용을 원치 않는 UObject class의 경우 아래의 함수를 사용하여 GC 대상에서 제외시키자.

3. UStruct는 GC에 포함되지 않는다.

  - UObjectBaseUtility::AddToRoot()
  - UObjectBaseUtility::SetFlags(EObjectFlag::RF_MarkAsRootSet)

 

UObjectBaseUtility::AddToRoot()
UPROPERTY 키워드 없는 UObject

 

 

 

GarbageCollection

 

 

 

UPROPERTY 키워드 있는 UObject

 

'프로그래밍 > 언리얼엔진' 카테고리의 다른 글

[UE4] Delegate  (0) 2020.03.09
[UE4] UPROPERTY 매크로  (0) 2020.03.08
[UE4] Log 남기기  (0) 2020.02.23
[UE4] 비동기 로딩(RequestAsyncLoad)  (0) 2020.02.23
[UE4] 언리얼에서 EnumFlags 사용하기  (0) 2020.02.16

WRITTEN BY
KeithHong
개인 기록 공간입니다. 잘못된 정보에 대한 수정 및 조언은 항상 감사합니다 ( _ _ )

,