Game !

Unreal C++ (8)

  1. 2022.06.20 [UE] UINTERFACE 와 FORCEINLINE

    UINTERFACE C++ 인터페이스인데 언리얼 오브젝트임 uclass 매크로를 사용 등.. cdo나 클래스 계층 정보를 가지고 있음 FORCEINLINE 길지않은 함수일 경우 인라인으로 써주는게 좋다 ( return bool 같은 한 줄짜리 함수 ) 크거나 복잡한 태스크를 수행하는 함수의 경우 함수 호출의 오버헤드는.. 함수가 실행되는데 걸리는 시간과 비교할 때 중요하지 않다. 그러나, 일반적으로 사용하는 작은 함수의 경우 함수 호출에 필요한 시간이 실제로 함수 코드를 실행하는데 필요한 시간보다 훨씬 많은 경우가 있다 ( 배보다 배꼽이 큰 경우 ) 이로 인해 성능 저하가 일어날 수 있음 인라인 함수로 만들게 되면.. 함수 호출이 자체의 내용이 복사본으로 대체되어 함수 오버헤드가 발생하지 않는다. ( 함..

  2. 2022.06.20 [UE] 애니메이션 관련 정리

    BS 는 두 가지가 있다 블렌드 스페이스 1D > 분할 기준(축)이 1개 블렌드 스페이스 > 분할 기준(축)이 2개 USkeletalMeshComponent > BP 에 붙는 스켈레탈 메시 컴포넌트. > 컴포넌트 내에서 스켈레탈 메시를 적용할 수 있음 - BP 로 만들지 않고, C++ 클래스만으로도 사용가능. ( C++ 클래스 내부에서만 사용할 경우.. 시각적으로만 안보이는 것 뿐이지, 클래스 내부에 선언된 컴포넌트를 통해 스켈레탈 메시를 적용할 수 있는 거임 ) USkeletalMesh > 진짜 스켈레탈 메시 Animation/AnimMontage.h > UAnimMontage 를 가지고 있는 헤더파일 UAnimMontage > 애니메이션 몽타주 클래스 이름 > 에디터에서는 [메뉴] 애니메이션 ▷ 애님..

  3. 2022.05.09 [UE] USceneComponent 와 PrimitiveComponent

    UActorComponent 씬에 올릴 수 있는 것들은 모두 액터가 기반이 되어야하며 이 액터들은 각각 다른 유형의 컴포넌트들을 가지게 되는데, 이 모든 컴포넌트에 대한 베이스 클래스이다. 언리얼 엔진에서는 1. 트랜스폼 정보를 가진 액터 컴포넌트를 Scene Component 라고 한다 2. 렌더링 정보를 가진 액터 컴포넌트를 Primitive Component 라고 한다 USceneComponent Transform 정보를 가진다. Actor 또는 USceneComponent 들의 Hierarchical Attachment - 부착을 지원한다. ( 하이어라키 계층 구조를 지원한다 ) 렌더링과 자체 콜리전을 가지지 않는다. 더보기 예를 들어, BP 에 Box 콜리전과 Text 렌더링을 한다고 하자. 사..

  4. 2022.05.09 [UE] 델리게이트와 이벤트

    Unreal C++ 함수 콜백 종류 델리게이트 다이나믹 델리게이트 이벤트 델리게이트는 외부(C++)에서 연결해서 사용 가능 다이나믹 델리게이트는 BP와 연결하기 위해 사용 가능 이벤트는 자신의 클래스에 속해서만 사용 가능 델리게이트 C++ 에서만 사용할 수 있는 콜백 함수 2개의 타입이 있다 ( 싱글 / 멀티 ) 바인딩할 경우, 인자랑 타입이 똑같아야한다. 더보기 델리게이트 생성 싱글 DECLARE_DELEGATE DECLARE_DELEGATE_OneParam DECLARE_DELEGATE_TwoParams DECLARE_DELEGATE_Params DECLARE_DELEGATE_RetVal DECLARE_DELEGATE_RetVal_OneParam ... 멀티 위의 표준과 동일하다. 단, 멀티 표기를 ..

  5. 2022.05.07 [UE] Unreal C++ 스크립트 규칙

    언리얼에서는 자료형을 int32 등으로 사용하게 된다. int 는 4바이트 int32 는 4바이트 int 뒤에 붙는 32 표기는 비트 정보이다 int32 는 8*4 = 32 비트 ▶ 언리얼은 PC용 게임으로만 제작되는 것이 아니기 때문에 멀티플랫폼을 지원한다. 그래서 자료형 크기를 변환할 수 있게 사용 플랫폼마다 int 크기가 다를 수 있다. (phthon) C++ 스트립트에서 데이터 경로로 블루프린트의 클래스타입 쓸 때는.. 경로 마지막에 _C 를 붙여줘야 한다. ( 블루프린트로 레퍼런스를 가지고 올 경우 _C ) ▶ 오브젝트가 아니라고 명시 EX. 레퍼런스로 가져온 경로 : AnimBlueprint'/Game/ABP_CPlayer.ABP_CPlayer' CHelpers::GetClass(&animIn..

  6. 2022.05.01 [UE] 언리얼 오브젝트와 UClass

    언리얼 오브젝트 언리얼 엔진의 관리를 받는 특수한 객체 언리얼 오브젝트가 아닌, 입력에 따라 결과 값만 받고싶은 C++ 클래스도 언리얼 프로젝트에서 전혀 문제없이 쓸 수 있다. 언리얼 엔진에서는 이러한 오브젝트를 구분하기 위해 클래스에 접두어를 사용한다. - 언리얼 오브젝트 (언리얼 엔진의 관리를 받는 객체) : U로 시작. ex) UObject, UMeshComponent... - 일반 C++ 오브젝트 ( C++ 네이티브 객체) : F로 시작. ex) FName, FVector... 언리얼 오브젝트를 생성하기 위한 최상단 기본 클래스는 UObject 이다. 언리얼 오브젝트는 언리얼 엔진이 자체적으로 만들어 제공하는 프레임웍이기 때문에 언리얼 헤더 툴 ( UHT ) 이라는 프로그램의 도움을 받아야 한다...

  7. 2022.04.30 [UE] 리플렉션

    리플렉션 프로그램이 실행시간(런타임)에 자기 자신을 조사하는 기능 ▶ 자기자신의 정보를 들여다본다. ① 런타임 우리가 코드를 짜고 빌드를 하게되면 컴파일을 하게 되는데 컴파일의 순서는 아래와 같다. 번역된 어셈블리는 우리가 미리 작성한 스크립트(소스파일) 기준으로 생성이 된다. 런타임 때( = 어셈블리가 동작할 때 )는 메서드가 호출되거나 필드의 값을 변경하는 것들이 모두 프로그래머가 빌드하기 전에 스크립트로 미리 작성해놓은 대로 실행된다. 즉, 런타임 때 동작하는 것들은 스크립트에 정의해놓은 일련의 작업일 뿐이다. --> ex. ( C++ 스타일 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 switch( selectType ) { cas..

  8. 2022.04.23 [UE] 자주 사용하는 언리얼 함수/변수/매크로

    CreateDefaultSubObject("str") > 템플릿 자료형 클래스를 매개변수로 받은 string 이름으로 생성(인스턴스)한 후 반환하는 함수 (포인터 반환) - 변수 이름이 BP의 컴포넌트 하이어라키에 표시되는 이름이다. cf. 왜 Sub 일까? 생성자에서 오브젝트를 생성할 때는 A라는 언리얼 오브젝트(멤버 변수)가 초기화를 위해, B라는 언리얼 오브젝트(임시 객체)를 생성할 때.. B는 A의 서브 오브젝트 라고 한다. --> 따라서 생성자 코드에서 언리얼 오브젝트의 인스턴스를 생성하고 관리하고자 할 때 함수 이름이 CreateDefaultSubObject 이다 RootComponent 변수 > 더미이다. 상징적인 의미로 사용된다. 이후에 생성되는 컴포넌트들의 Tr 기준점이 된다. - 이후에..

1