Unreal C++ 정리

주찬환·2024년 12월 13일

Unreal

목록 보기
7/12
post-thumbnail

Mesh

  • StaticMeshComponent : 관례상 VisibleAnywhere를 사용한다.
    (헤더) #include "Components/StaticMeshComponent.h"를 본문에서 추가해줘야 사용할 수 있다.
    (초기화) Mesh = CreateDefuaultSubObject<UStaticMeshComponent>("에디터에서 나타날 이름");
    ->> CreateDefaultSubobject : 컴포넌트 동적할당한다는 뜻으로 언리얼C에서 컴포넌트를 만들때 사용한다.
    (경로지정) RootComponent = Mesh;

  • StaticMesh
    (초기화) ConstructorHelpers::FObjectFinder<UStaticMesh> mesh(L"메시가 저장되어 있는 언리얼 경로(레퍼런스 복사)");
    if(mesh.Succeeded()) { Mesh ->SetStaticMesh(mesh.Object); }


Material

: 머티리얼은 그대로쓰지 않고 인스턴스화해서 셰이더 빌드해서 사용한다. Global Vector Parameter Values에서 체크를 해줘야 C에서 값을 다룰 수 있다.

(Header위치) #include "Materials/MaterialInstanceConstant.h"
(머티리얼 가져오기) UObject* obj = StaticLoadObject(UMaterialInstanceConstant(자료형)::StaticClass(), nullptr, L"경로(레퍼런스 복사)");
(Casting) UMaterialInstanceConstant* material = Cast<UMaterialInstanceConstant>(obj);
->>- UMaterialInstanceConstant : 바꿀수 없는 값 상수

(값을 바꾸기) Material = UMaterialInstanceDynamic::Create(material, this);
(설정) Mesh -> SetMaterial(엘리먼트 번호, Material);


UKismetSystemLibrary::K2_SetTimer

: 일정시간 후에 지정한 함수를 호출한다.
(헤더) #include "Kismet/KismetSystemLibrary.h"
(사용) UKismetSystemLibrary::K2_SetTimer(this, "SetRandomColor", 주기, 반복여부, 최초 실행 딜레이);
(함수만들기) Mesh::SetRandomColor()

{
	Material->SetVectorParameterValue("Color", FLinearColor::MakeRandomColor()); 
}

MakeRandomColor() : 무작위 색상을 생성하는 함수
FColor : 0~255범위
FLinearColor : 0~1범위


UPROPERTY

  • UObject* : 오브젝트 레퍼런스 : 에디터에서 전체 오브젝트가 다나온다.
  • UClass* : 클래스 레퍼런스 : 에디터에서 모든 클래스가 다나온다.
  • StaticClass() : 모든 UClass 타입이 가지고 있는 기본형으로 기본적으로 비어있으면 게임이 터지거나 하는 상황을 방지하기 위해서 디폴트 값으로 넣어 놓는다.
  • (권장)TSubclassOf<클래스타입> : 클래스 제한 레퍼런스 : 위처럼 모든 클래스와 오브젝트가 다나오면 오류를 유발할 가능이 높음.
    따라서, 지정한 클래스 이하의 클래스만 볼 수 있도록 클래스 타입을 제한할 수 있는 클래스

UWorld

  • SpawnActor : 월드에 원하는 타입의 액터를 소환하는 함수
    사용 : GetWorld()->SpawnActor<클래스타입>(클래스레퍼런스, 소환할 위치 정보);

위치정보 가져오기 :

FVector loctaion;
location = GetActorLocation();    //자기 자신의 로케이션 가져오기

FTransform transform;
transform.SetLocation(location); //자신의 로케이션 정보를 트랜스 폼 구조체에 저장

profile
게임 개발자가 되고 싶습니다! #Unreal #C++

0개의 댓글