UE4 C++ 정리

Date:     Updated:

카테고리:

태그:

공부하면서 알게된 C++ 관련 언리얼4 기능들 정리


언리얼 공식 매뉴얼 https://docs.unrealengine.com/ko/index.html

  • 떙떙.Object 👉 포인터

👩‍🦰 클래스 타입

ConstructorHelpers::FObjectFinder

  • 메모리에서 에셋을 찾아보고 로드한다.
  • 생성자 안에서만 사용할 수 있다.
  • static ConstructorHelpers::FObjectFinder<컴포넌트 클래스=""> 객체(인수)
    • 이런 형태로 많이 쓰며 인수로 에셋의 경로를 넘기고 그 경로에서 해당 컴포넌트를 가진 에셋을 찾아 로드한다.
  • 함수
    • Succeeded()
      • 에셋 로드를 성공하면 True 리턴

👩‍🦰 컴포넌트

StaticMesh

  • UStaticMeshComponent 클래스 애니메이션이 없는 모델링 에셋에 시각적, 물리적 기능 제공


PointLight

  • UPointLightComponent 클래스
  • 조명 기능을 하는 컴포넌트.


ParticleSystem

  • UParticleSystemComponent 클래스
  • 파티클 효과를 입혀주는 컴포넌트.



👩‍🦰 언리얼의 자료형

  • 문자열
    • FName
    • FText 👉 언리얼의 자동 현지화(번역)를 지원한다.
    • FString 👉 C++ 에서의 string처럼 문자열 처리와 관련된 메서드들 사용 가능
  • 언리얼에선 int 말고 int32를 쓴다.



👩‍🦰 매크로

UPROPERTY()

  • 언리얼에서는 UPROPERTY() 매크로를 포인터 위에 붙여주면 객체가 더 이상 사용되지 않으면 자동으로 메모리를 해제시켜 준다.
    • 가비지 컬렉션 역할
    • 개발자가 직접 delete시킬 필요가 없음
    • 이 매크로는 언리얼 오브젝트 객체에만 사용이 가능하다.
  • 적용할 변수 선언 바로 윗 줄에 써주면 된다.
  • 프로퍼티
    • UPROPERTY(VisibleAnywhere)
      • 이 속성이 언리얼 디테일 윈도우뷰에서 보이지만 이 속성의 값을 편집은 할 수 없다.
    • UPROPERTY(EditAnywhere)
      • 이 속성이 언리얼 디테일 윈도우뷰에서 보이며 이 속성의 값도 편집은 할 수 있다.
    • UPROPERTY(EditAnywhere, Category = Stat, Meta = (AllowPrivateAccess = true))
      • priavte 은닉성을 유지하나 에디터에서 편집할 수 있게 해주는 키워드

UE_LOG

UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자…)

  • 로그를 출력한다.

ABLOG

  • 특정 카테고리를 고정으로 하고 로그를 남길 때 제작하는 매크로.



👩‍🦰 함수

CreateDeaultSubobject

  • 컴포넌트들을 동적 할당해 생성하고 그 주소를 리턴한다.
Body = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BODY"));
Water = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WATER"));
  • 동적 할당하고 포인터를 리턴
  • UStaticMeshComponent 컴포넌트 생성
  • TEXT(“BODY”)
    • 액터에 속한 컴포넌트들을 구별하기 위한 Hash 값 생성에 사용되는 문자열 값이다.
    • 다른 컴포넌트들과 중복되지 않는 유일한 값을 사용해야 하며 어떤 값을 넣어도 상관은 없다.


SetupAttachment

    RootComponent = Body;
	Water->SetupAttachment(Body);
  • 루트 컴포넌트인 인수를 전달하면 호출한 컴포넌트를 루트 컴포넌트의 자식으로 넣는다.
  • 즉 인수로 넘긴 컴포넌트의 자식으로 붙여준다.


SetRelativeLocation

Water->SetRelativeLocation(FVector(0.0f, 0.0f, 135.0f));
  • 해당 컴포넌트의 디폴트 Transform 값을 설정할 수있다. 인수로 FVector 타입의 구조체로 넘긴다.


AddActorLocalRotation(Y축회전, Z축회전, X축 회전)

  • 액터를 인수만큼 추가로 회전시킴.
  • FRotator를 인수로 넘김
AddActorLocalRotation(FRotator(0.0f, RotateSpeed * DeltaTime, 0.0f));  // Z 축으로 30도 * 프레임당 시간 만큼 회전


SetStaticMesh(포인터)

StaticMesh 컴포넌트를 해당 포인터가 참조하는 에셋을 붙인 상태로 붙여준다.



👩‍🦰 이벤트 함수

BeginPlay

  • 액터가 게임에 참여할 때 자동 호출
  • 유니티의 Start

Tick(float DeltaTime)

  • 매 프레임마다 호출됨
  • 유니티의 Update
  • 프레임 타임 정보가 인수로 필요함.

EndPlay

  • 액터가 게임에서 퇴장하여 메모리에서 소멸될 때 자동 호출



👩‍🦰 헤더 파일

  • #include “EngineMinimal.h”
    • 언리얼 오브젝트의 다양한 엔진 클래스 선언을 모아둔 공용 헤더
      • CoreMinimal보다 더 기능이 많다.
  • #include “CoreMinimal.h”
    • 언리얼 오브젝트가 동작할 수 있는 최소한의 기능만 선언된 공용 헤더
  • #include “Fountain.generated.h”
    • 코드를 작성할 땐 없지만 언리얼 환경의 컴파일 과정에서 생기는 파일이다. 마지막 #inlcude 구문에서 반드시 선언해주어야 하는 헤더파일이다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

UE4Docs 카테고리 내 다른 글 보러가기

댓글 남기기