언리얼

    [Unreal] Actor 와 ActorComponent 의 개념 (vs. Unity 에서의 GameObject 와 비교)

    Actor 와 ActorComponent 유니티에서는 게임 오브젝트 아래에 게임 오브젝트를 넣는 식으로 Hierarchy 를 만들어낼 수 있다. 하지만 언리얼은 그런 식으로 동작하지 않는다. 유니티에서는 항공기가 있다고 했을 때, 프리팹에 각종 게임 오브젝트를 하위에 넣어 조합하는 방식으로 해당 오브젝트를 제작할 수 있다. 그런데 언리얼에서 Actor 는 Bucket 같은 개념으로, 다양한 액터 컴포넌트를 담고 있다. 즉, 언리얼은 Bucket 안에 다른 Bucket 을 넣는 방식으로 오브젝트를 생성하지 않는다. 액터 컴포넌트는 재사용가능한 기능을 정의하는 컴포넌트에 대한 베이스 클래스로 충돌, 메시, 월드 이동, 소리 재생, 빛과 명암 등의 다양한 기능을 지원한다. 언리얼에서는 트랜스폼을 가진 액터 컴..

    [Unreal] 클래스 기본 객체 (CDO) + 로딩과정 + 로그디버깅 + 인스턴스 생성

    UCLASS, 리플렉션, 프레임워크 UClass에는 언리얼 오브젝트에 대한 클래스 계층 구조 정보와 멤버 변수, 함수에 대한 정보를 모두 기록 앞선 강좌에서 하나의 언리얼 오브젝트가 만들어지기 위해서는, 실제 컴파일 전에 언리얼 헤더 툴에 의해 헤더 파일을 분석하는 과정이 선행되며, 이 과정이 완료되면 Intermediate 폴더에 언리얼 오브젝트의 정보를 담은 메타 파일이 생성된다고 설명했다. 언리얼 엔진이 컴파일 전에 먼저 메타 소스 파일과 헤더 파일을 생성하는 목적은 여러가지가 있겠지만, 기존의 C++ 문법에서 제공하지 못하는 런타임에서의 빠른 클래스 정보의 검색이라고 생각한다. 이 메타 정보는 언리얼 엔진이 지정한 UClass라는 특별한 클래스를 통해 보관된다. UClass에는 언리얼 오브젝트에 ..

    [Unreal] 언리얼 빌드 시스템 + Target.cs

    Unreal Build System (언리얼 빌드 시스템)은 언리얼 엔진 4 (UE4) 빌드 프로세스를 자동화시키는 툴 모음이다. 일반적인 수준에서 UnrealBuildTool 과 UnrealHeaderTool 은 언리얼 빌드 시스템을 지원한다. UnrealBuildTool UnrealBuildTool (UBT)는 다양한 빌드 구성으로 UE4 소스 코드를 빌드하는 프로세스를 관리해 주는 커스텀 툴이다. BuildConfiguration.cs 파일에서 다양한 사용자 환경설정 가능 빌드 옵션을 살펴볼 수 있다. UnrealHeaderTool UnrealHeaderTool (UHT) 는 UObject 시스템을 지원하는 커스텀 파싱 및 코드 생성 툴이다. 코드 컴파일은 두 단계로 이루어진다: UHT 를 실행한다..

    [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] 캐릭터가 바라보는 방향으로 회전 및 이동하기

    아래와 같이 바인딩해준다 / 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] Construction Script

    블루프린트 내의 각각의 인스턴스에 다양성을 줄 수 있는 스크립트. 게임 내 레벨을 구축하거나, 블루프린트 내의 프로퍼티를 업데이트 할 때 등등을 구현한다. 블루프린트 인스턴스 생성시 컴포넌트 리스트 다음에 실행되는 부분이다. 따라서 블루프린트 인스턴스에서 필요한 초기화 작업을 할 수 있다. 블루프린트와 관련된 가장 최신의 정보를 제공 같은 블루프린트로 만든 인스턴스라도 이 Construction Script 을 통해 인스턴스마다 개별적인 특성을 부여할 수 있다. 이 Construction Script 안에서 각각의 인스턴스마다 다르게 부여할 프로퍼티들을 public 변수로 에디터에서도 열고 에디터에서 각각의 인스턴스마다 이 변수 값들을 설정하게 한 후 이를 Setting 하는 작업을 한다. 2 개의 변수..