게임 개발/Unreal Engine 80

[UE4] TMap, TSet의 Key 값으로서 구조체를 사용 방법

TMap, TSet의 Key 값으로서 커스텀 구조체를 사용하는 방법을 알아 보겠습니다. 먼저 간단한 커스텀 구조체를 정의합니다. USTRUCT() struct FMyStruct { GENERATED_BODY() FMyStruct() : Key(""), SomeFloat(0.f) {} FMyStruct(FString key, float someFloat) : Key(key), SomeFloat(someFloat) {} UPROPERTY() FString Key; UPROPERTY() float SomeFloat; }; TMap의 키로 구조체를 사용하려면, 이 구조체에 operator==와 구조체 멤버가 아닌 GetTypeHash 오버로드가 있어야 합니다. 이 두가지를 구현하여 구조체를 확장합니다. // H..

[UE4] Aimation Montage Play가 동작하지 않는 경우 해결

Anim Blueprint의 노드에 Montage Slot이 추가 되었는지 확인하여 없다면 추가해 주면 해결 됩니다. 다음의 블루프린트와 같이 Animation Montage가 플레이되도록 호출하였지만 아무런 일도 일어 나지 않을 경우, Animation Blueprint의 AnimGraph에 Montage Slot이 추가 되었는지 확인해주어야 겠습니다. 추가 되어 있지 않다면 다음과 같이 Slot을 추가하여 연결 시켜 주면 해결됩니다. 다음과 같이 Slot을 추가하니 정상적으로 플레이가 되었습니다. Anim Montage사용 방법은 다음의 페이지를 참고해 주세요. https://docs.unrealengine.com/4.27/ko/AnimatingObjects/SkeletalMeshAnimation/A..

[UE4] 어셋 이름 규칙(Asset naming conversion)

일반적인 이름 규칙들 [AssetTypePrefix]_[AssetName]_[Descriptor]_[OptionalVariantLetterOrNumber] 접두어 General Asset Prefix HDRI HDR_ Material M_ Material Instance MI_ Physics Asset PHYS_ Physics Material PM_ Post Process Material PPM_ Skeletal Mesh SK_ Static Mesh SM_ Texture T_ OCIO Profile OCIO_ Blueprints Asset Prefix Actor Component AC_ Animation Blueprint ABP_ Blueprint Interface BI_ Blueprint BP_ Cur..

[UE4] Enum을 문자로 변환(EnumToString)

다음과 같이 enum이 정의 되어 있고 문자열로 출력하는 방법을 알아 봅시다. UENUM(BlueprintType) enum class ELocomotionState : uint8 { Idle UMETA(DisplayName = "Idle"), Walk UMETA(DisplayName = "Walk"), Jog UMETA(DisplayName = "Jog"), Sprint UMETA(DisplayName = "Sprint"), }; 여러 방법이 있지만 다음의 코드가 가장 간단한 방법입니다. DEFINE_ENUM_TO_STRING 매크로를 작성이후 EnumToString 함수 호출하여 FString으로 출력합니다. DEFINE_ENUM_TO_STRING(ELocomotionState); ... ELocom..

[UE4] blueprint의 부모 클래스가 변경되는 현상 해결 방법

blueprint의 부모 클래스가 변경되는 현상 해결 방법 블루프린트를 만들면서 EquippableItem으로 설정하고 저장하였는데 에디터를 다시 구동시키면 이상하게도 부모의 클래스 이름이 PlusItem으로 변경되는 현상이 있었습니다. 인터넷 서칭을 해보니 다음과 같은 글을 찾을 수 있었습니다. My problem is similar. I cannot use File >> Reparent Blueprint (I have renamed the original parent class. But the renamed new class didn't show up). What helped is to add the following line to DefaultEngine.ini below [/Script/Engin..

[UE4] C++ Module Generator 소개

C++ Module Generator 설치 Epic games launcher 마켓에서 C++ Module Generator를 검색하여 설치합니다. 설치 후 C++ Module Generator를 Enable 시키고 에디터를 다시 실행합니다. 빈 Plugin 모듈 생성 먼저 MyPlugin이라는 이름으로 Runtime Plugin 모듈을 생성합니다. Editor 모듈 추가 Moudle Generator를 사용하여 MyPlugin에 Editor Moudle을 추가하자. Windows > Moudle Generator를 실행하여 MyPlugin에 Editor 모듈을 생성합니다. 솔루션 파일을 다시 만듭니다. 정상적으로 MyPlugin에 Runtime 모듈과 Editor 모듈이 추가 되어 있는 것을 볼 수 있..

[UE4] Custom Asset Type 구현 - Import 하기

다음의 두 글을 먼저 살펴보야 겠습니다. [게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Plugin 모듈 만들기 [게임 개발/Unreal Engine] - [UE4] Custom Asset Type 구현 - Asset 구현 & 등록 MyCustomAssetFactory.h에 FactoryCreateText 선언을 추가 합니다.MyCustomAssetFactory.cpp에 FactoryCreateText 함수 재정의 코드를 추가합니다. UObject* UMyCustomAssetFactory::FactoryCreateText( UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObje..

[UE4] Custom Asset Type 구현 - Asset 구현 & 등록

이 글이전에 Plugin 모듈을 먼저 만들어야 하며 다음 글을 참고해 주세요. [게임 개발/Unreal Engine] - [UE4] Asset Type추가 - Plugin 모듈 만들기 커스텀 어셋 만들기 먼저 UObject를 상속받아 자신의 커스텀 어셋을 만듭니다. #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "MyCustomAsset.generated.h" UCLASS() class TESTPLUGIN_API UMyCustomAsset : public UObject { GENERATED_UCLASS_BODY() UPROPERTY(EditAnywhere) int32 Value; UPROPERTY(Edit..

[UE4] Custom Asset Type 구현 - Plugin 모듈 만들기

Runtime 모듈과 Editor 모듈을 분리해서 만들 것입니다. 모듈을 분리하지 않아도 정상 동작 하지만 관례에 따라 언리얼 엔진 개발시에 Runtime 모듈과 Editor 모듈을 분리하여 개발합니다. 이렇게 하는 이유는 배포시에 용량이나 동작의 효율성 때문입니다. Runtime 모듈 만들기 먼저 Plugins > New Plugin 에서 빈 플러그으로 작성합니다. Runtime 모듈로 TestPlugin을 생성합니다. 수동으로 Editor 모듈 추가하기 C++ Moulde Generator를 사용하여 좀 더 편리하게 Editor 모듈을 추가 할 수 있으며 다음 글을 참고해 주세요. [게임 개발/Unreal Engine] - [UE4] C++ Module Generator 소개 아래 설명은 C++ Mo..