[UE5] Unreal - 1

김영웅·2025년 1월 21일

언리얼에는 자동 메모리 관리 시스템이 있어서
언리얼 관련 컴포넌트 포인터는 들고 있어도 삭제해버린다.
언리얼 관련이면 반드시 UPROPERTY를 붙어여만 관리 시스템이 걔를 등록해 사용을 아무데도 안할 때 삭제한다.

UPROPERTY

공개 / 수정 권한 (1개만 가능)

  • VisibleDefaultsOnly
    블루프린트 에디터 창의 디테일 패널에서 값을 보기 가능
  • VisibleInstanceOnly
    월드상에 배치된 오브젝트의 디테일 패널에서 값을 보기 가능
  • VisibleAnywhere
    블루프린트 에디터와 월드상에 배치된 오브젝트의 디테일 패널에서 값을 보기 가능
  • EditDefulatOnly
    블루프린트 에디터 창의 디테일 패널에서 값을 수정/보기 가능
  • EditInstanceOnly
    월드상에 배치된 오브젝트의 디테일 패널에서 값을 수정/보기 가능
  • EditAnywhere
    블루프린트 에디터와 월드상에 배치된 오브젝트의 디테일 패널에서 값을 수정/보기 가능

블루프린트 관련 (1개만 가능)

  • BlueprintReadWrite
    블루프린트에서 Get/Set 사용 가능
  • BlueprintReadOnly
    블루프린트에서 Get만 사용 가능
  • BlueprintSetter, BlueprintGetter
    해당 변수에 접근 할 수 있는 함수를 지정하고 블루프린트는 해당 함수를 통해 변수에 접근합니다.

Category

  • 아래와 같이 디테일 패널에 이름일 지정할 수 있음

  • 이 외에도 이미 선언되어 있는 Input, Camera 등으로 넣어줄수도 있고, "TestCategory|Want" 이런 식으로 리스트 안에 리스트 느낌으로 넣어줄 수도 있음

Meta

  • metadata 지정자라고 하며 다양한 기능을 넣어줄 수 있음
    아래와 같이 AllowPrivateAccess를 넣어 private 변수를 디테일 창에서 보이게 만들 수 있음
  • 이외에도 UIMin, UIMax 등을 넣어 조절할 수 있음
  • 언리얼 - MetaData
  • UI에서만 사용 가능한 metadata 중에 BindWidget이라고 있음.
    이걸 붙이면 해당 블루프린트를 컴파일할 때 같은 이름의 UI를 연동해줌

MeshComponent

  • SetOnlyOwnerSee(bool) : true로 하면 나만 보이게 설정 가능
  • bCastDynamicShadow : 움직일 때 실시간으로 그림자 그리냐
  • CastShadow : 정적 그림자 그리냐

입력 설정

입력 매핑 컨텍스트, 입력 액션으로 입력을 정의할 수 있음
입력 액션에서 해당 액션의 값 타입을 설정하고
입력 매핑 컨텍스트에서 키를 설정 가능

트리거 = 눌렸을 때 작동
모디파이

  • 스위즐 입력 축 값 : 원래 값이 X에 들어가는데 이거 있으면 Y로 드감
  • 부정 : +로 값이 안가고 -로 감

UInputMappingContext로 입력 매핑 컨텍스트를 받아올 수 있고
UEnhancedInputLocalPlayerSubsystem을 가져와 AddMappingContext로 입력 매핑 컨텍스트를 설정할 수 있음


그외

UE_LOG로 로그 남기기 가능

InputComponent의 BindAction() 함수로 키 설정 가능

fbx 임포트할 때
메시 임포트 체크박스가 있는데 끄면 메시는 없고 본만 들어와서 애니메이션만 넣을 수 있음

우클릭해서 액션에서 익스포트로 빼던가 이주로 옮길 수 있다.

언리얼에선 어딘 2바이트고 4바이트하는 문제 해결할려고 int32 쓴다는데 잘 모르겠다
일단 나는 그렇게 쓰는걸 본적이 없긴 하다.

SpawnDefaultController()
캐릭터가 생성되었을 때 그에 맞는 컨트롤러를 자동으로 인식시킨다
언리얼 - SpawnDefaultController
아무래도 기본 컨트롤러를 넣어주는 듯?

TObjectPtr<class USpringArmComponent>
이런식으로 전방 선언과 함께 포인터를 사용할 수 있음
언리얼은 USpringArmComponent* 이런 포인터보단
TObjectPtr<USpringArmComponent>을 사용하는걸 권장함

대충 맴버 변수 선언 같은 건 TObjectPtr<>로 하고 지역 변수는 포인터로 해도 문제없는 듯함.

UEnhancedInputComponent를 쓰려면 모듈을 추가해야함.
.Build.cs에 들어가면 모듈을 추가할 수 있음
public 모듈과 private 모듈이 있는데 EnhancedInput은 public에 넣으면 되는 듯?

IsValid(UObject*)
포인터 부분에 있는게 존재 하는지, 삭제 예정인지 확인하고 존재한다면 true를 반환해줌

Cast<타입>으로 형변환함
이게 내가 기억하는 바로는 언리얼 타입으로 변환 가능한지 추가로 검사할거임
일반 타입 형변환은 여전히 static_cast<> 써야되던걸로 앎

APlayerContoller.GetViewportSize(x, y);
뷰포트 사이즈 가져옴

DeprojectScreenPositionToWorld(x, y, center, front)
화면의 x, y 위치를 디프로젝션해서 cetner와 front에 값을 넣음

UKismetMathLibrary::FindLookAtRotation(시작위치, 끝위치)으로 시작위치에서 끝위치로 회전값을 구함

TSubclassOf<타입>
클래스 타입을 담음.
보통 UPROPRTY로 열어서 타입을 받아 그걸 생성한다.

AnimInstanceBlueprint에서
Layered blend per bone으로 지정된 본을 기준으로 애니메이션을 섞을 수 있다.
레이어 설정 - 인덱스 - 분기 필터 - 인덱스에 원하는 본 이름을 입력하면 거길 기준으로 본 값이 섞인다.

UUserWidget을 상속받아 UI를 제작 가능

FText::FromString(FString)으로 FString에서 FText로 변환 가능

UI 생성은 CreateWidget<>()으로

profile
게임 프로그래머

0개의 댓글