Game!

Engine/Unreal (11)

  1. 2022.06.20 [UE] UINTERFACE 와 FORCEINLINE

    UINTERFACEC++ 인터페이스인데 언리얼 오브젝트임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.30 [UE] 파티클 관련 정리

    ParticleSystem : 실제 파티클 에셋 정보ParticleSystemComponent : 오브젝트에 컴포넌트로 붙는 파티클 정보    ParticleSystemComponent:: SetTemplate > 사용할 파티클을 변경한다  ParticleSystemComponent:: ResetParticles> 파티클 출력 상태를 초기화시킨다

  4. 2022.05.30 [UE] 콜리전 관련 정리

    콜리전은 두 가지로 나눠지며 각각 설정이 가능하다 1. 오브젝트 > 보통 콜리전이 있는 액터를 지칭한다. 일반적인 충돌을 의미 2. 트레이스 (유니티의 RayCast) > Trace : 추적. 직선을 쏴서 무엇이 존재하는지 확인하는 방법이다. 여기에 대한 자세한 내용은 언리얼 문서에 잘 정리되어 있다. https://www.unrealengine.com/ko/blog/collision-filtering 콜리전의 두 가지 타입은 각각 다른 유형의 쿼리 타입을 사용한다. cf. 쿼리 : 닿자마자 충돌로 처리되는 정보들 충돌 관련 함수를 사용할 때 오브젝트를 기준으로 체크할 경우 오브젝트 타입 사용 트레이스를 기준으로 체크할 경우 트레이스 타입 사용 이 타입의 Enum 들은.. 프로젝트 셋팅 -> 콜리전 ->..

  5. 2022.05.26 [UE] UProperty / UFunction

    언리얼 오브젝트 변수 지정 : UPROPERTY( ) EditAnywhere > 어디에서든 디테일 패널에서 확인하고 수정 가능 ( BP 에디터, 레벨에 배치된 거 상관 없음 ) EditInstanceOnly > 레벨에 배치된 (인스턴스된) 객체만 디테일 패널에서 확인하고 수정 가능 EditDefaultOnly > BP 에디터 내부의 디테일 패널에서만 확인하고 수정 가능 VisibleAnyWhere > 수정 불가능. 어디에서든 디테일 패널에서 확인 가능 ( BP 에디터, 레벨에 배치된 거 상관 없음 ) VisibleInstanceOnly > 수정 불가능. 레벨에 배치된 (인스턴스된) 객체만 디테일 패널에서 확인 가능 VisibleDefaultOnly > 수정 불가능. BP 에디터 내부의 디테일 패널에서만 ..

  6. 2022.05.09 [UE] USceneComponent 와 PrimitiveComponent

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

  7. 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 ... 멀티 위의 표준과 동일하다. 단, 멀티 표기를 ..

  8. 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..

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

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

  10. 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..

1 2