게임엔진/Unreal
[Unreal] UENUM 메타데이터 종류
기본 // enum 명칭 별도로 가지기 위함) 검색할때 유용 UENUM(Category="") // 비트마스크를 사용하고 있는 UPROPERTY 타입 int형 변수랑 사용가능 UENUM(meta=(Bitflags)) // 시험중인 기능이고 비활성화 되있음 UENUM(meta=(Experimental)) // 에디터에서 보여질 명칭 UENUM(ScriptName="") // 툴팁을 생성해줌 UENUM(ToolTip) // 블루프린트랑 사용가능하게끔 설정 UENUM(BlueprintType) UI 전용 // 애님 블프에서 예) enum형 드롭다운에서 보여질 명칭 UMETA(DisplayName="abc") // 에디터에서 숨김 UMETA(Hidden) // 툴팁을 생성해줌 UMETA(ToolTip="abc")
[Unreal] UENUM에서의 비트마스크 사용
UENUM(Meta = (Bitflags, UseEnumValuesAsMaskValuesInEditor = "true")) enum class EItemGradeInfo { // 일반 아이템 Common , // 레어 아이템 Rare , // 레전드 라이템 Legend, }; ENUM_CLASS_FLAGS(EItemGradeInfo); 사용 할 곳 예) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta = (Bitmask, BitmaskEnum = "EItemGradeInfo")) uint8 ItemGradeInfo = 0; void DoSomething(const EItemGradeInfo info) { if(EItemGradeInfo::Common & sta..
[Unreal] UENUM 명칭 주기 (애님 블루프린트)
다음은 애니메이션에서 사용하는 열거형이다 UMETA(DisplayName = "명칭") 을 옆에다 추가해준다 (바이너리 형태로 동작하는 메커니즘) #pragma once #include "CoreMinimal.h" UENUM(BlueprintType) enum class ECharacterState : uint8 { IDLE UMETA(DisplayName = "제자리"), WALK UMETA(DisplayName = "걷기"), RUN UMETA(DisplayName = "뛰기"), JUMP UMETA(DisplayName = "점프"), MAX }; 아래와 같이 한글이 깨져있다면 h 파일을 UTF-8로 저장하자 결과
[Unreal] Idle 애니메이션 무작위로 실행
애님인스턴스 h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Animation/AnimInstance.h" #include "AnimEnum.h" #include "CharacterAnimInst.generated.h" /** * */ UCLASS() class SLASHOPENWORLD_API UCharacterAnimInst : public UAnimInstance { GENERATED_BODY() private: const int MaxIdleCnt = (int)ECharacterState::IDLE_MAX; const..
[Unreal] enum 타입을 FString 형태로 변환
특이사항) ANY_PACKAGE 메크로는 5.1부터 버려짐. FindObject 파라미터로 ANY_PACKAGE 대신에 UObject* 타입의 대한 포인터 또는 레퍼런스를 보내줘야 하는데 UENUM 타입이므로 nullptr이 들어갈텐데 이보단 FindFirstObjectSafe 함수로 바꿔서 해주는게 나음. GetDisplayNameText(static_cast(Enum)).ToString(); 이 함수는 파라미터가 사라진채 재정의 되었으므로 이를 단순하게 GetNameStringByIndex으로 enum 타입을 int로 강제 캐스팅해서 보내주면 된다. #pragma once #include "CoreMinimal.h" class Utility { public: template static FString..
[Unreal] 캐릭터가 바라보는 방향으로 회전 및 이동하기
아래와 같이 바인딩해준다 / Edit > Project Settings > Input 아래 옵션은 메쉬가 컨트롤러 회전값에 따라 회전하지 않도록 설정함으로 끄는게 중요하다 bUseControllerRotationYaw = bUseControllerRotationPitch = bUseControllerRotationRoll = false; // 아래는 이동을 담당하는 컴포넌트 조작 방법 auto characterMovement = GetCharacterMovement(); characterMovement->bOrientRotationToMovement = true; // 바라보는 방향으로 회전하고자 하는 속도 characterMovement->RotationRate = FRotator(0.f, 400.f,..
[Unreal] Could not find NetFxSDK install dir; 오류 해결
ERROR: Could not find NetFxSDK install dir; this will prevent SwarmInterface from installing. Install a version of .NET Framework SDK at 4.6.0 or higher. .NET Framework SDK 4.6.0 이상을 설치하라고 해서 마이크로소프트 홈페이지를 가서 설치했는데도 같은 에러가 발생했다. 그래서 Visual Studio Installer 로 들어가서 수정을 누르고 .NET 데스크톱 개발을 설치 해주니 에러가 해결 되었다. 출처 : 언리얼 엔진4 프로젝트 생성 에러 해결 (tistory.com)
[Unreal] 오브젝트 테두리 선 메터리얼로 구현
메터리얼 설정에서 도메인을 Post Process로 설정한다 아래와 같이 구현한다, Param 1개는 ctrl + s 조합키로 생성이 가능하다 그 다음 볼륨을 설정 해야한다 Volumes > PostProcessVolume 볼륨 안에서 Post Process Materials 항목을 찾은 후 배열에서 항목 추가하면 처음엔 Choose로 되어있을텐데 클릭 후 Asset Reference를 클릭한 후 위에 만든 메터리얼을 연결 시켜준다 맨 밑에 Infinite Extent라고 되어있을 텐데 체크 해제되어 있으면 오브젝트가 띄워주는 큐브 영역에서만, 되어있다면 해당 레벨 공간 전부 다 적용된다 오브젝트 렌더링에서 Render CustomDepth Pass가 체크 되어있어야 한다 플레이어가 해당 영역에 들어서야..
[Unreal] Construction Script
블루프린트 내의 각각의 인스턴스에 다양성을 줄 수 있는 스크립트. 게임 내 레벨을 구축하거나, 블루프린트 내의 프로퍼티를 업데이트 할 때 등등을 구현한다. 블루프린트 인스턴스 생성시 컴포넌트 리스트 다음에 실행되는 부분이다. 따라서 블루프린트 인스턴스에서 필요한 초기화 작업을 할 수 있다. 블루프린트와 관련된 가장 최신의 정보를 제공 같은 블루프린트로 만든 인스턴스라도 이 Construction Script 을 통해 인스턴스마다 개별적인 특성을 부여할 수 있다. 이 Construction Script 안에서 각각의 인스턴스마다 다르게 부여할 프로퍼티들을 public 변수로 에디터에서도 열고 에디터에서 각각의 인스턴스마다 이 변수 값들을 설정하게 한 후 이를 Setting 하는 작업을 한다. 2 개의 변수..
[Unreal] 클래스 블프 및 메쉬, 텍스처 등 로딩 Finder
ConstructorHelpers 클래스 내에 존재하는 함수 모든건 생성자 내부에서 이루어져야됨. BeginPlay 절대 x 파라미터는 TEXT형이며 쌍따옴표 안에 해당 경로가 들어가야 한다. 항상 /Game 으로 시작 클래스 로딩 FClassFinder // 클래스는 끝에 _C 접두어를 붙어줘야됨. 아래는 예시 auto BP_Actor = ConstructorHelpers::FClassFinder(TEXT("/Game/Actors/TestActor.TestActor_C")); 또는 아래와 같이 가능 ConstructorHelpers::FClassFinder BP_ACTOR(TEXT("")); 클래스는 TSubclassOf 타입임 즉 UClass, 항상 Succeed 함수로 널이 아닌지 체크 TSubcl..