본문 바로가기
반응형

개발65

언리얼 C++ TSharedFromThis 완전정복 (자기 참조 스마트 포인터 안전 가이드) TSharedFromThis – 자기 자신을 SharedPtr로 안전하게 넘기고 싶을 때Unreal Engine을 사용하다 보면 TSharedPtr이나 TSharedRef를 통해 객체의 메모리를 자동으로 관리하게 됩니다. 그런데 때때로, 객체 내부에서 자기 자신(this)을 스마트 포인터로 외부에 넘겨야 하는 상황이 생깁니다. 이때 그냥 TSharedPtr(this)처럼 쓰면 큰일 납니다.📌 왜 필요할까?객체를 스마트 포인터로 만들었더라도, 내부에서 this를 외부로 넘기면 참조 카운트가 관리되지 않습니다. 이럴 때 TSharedFromThis가 필요합니다.✅ TSharedFromThis로 해결class FMyObject : public TSharedFromThis{public: void Init.. 2025. 5. 18.
언리얼 C++ 에셋 경로 다루기 가이드 (FSoftObjectPath, TryLoad, ClassPath) FSoftObjectPath / FSoftClassPath – 언리얼의 소프트 참조 이해하기FSoftObjectPath와 FSoftClassPath는 Unreal Engine에서 소프트 참조(Soft Reference)를 다룰 때 사용하는 구조체입니다. 하드 참조처럼 직접적으로 객체를 메모리에 로딩하지 않고, 필요할 때만 로딩해서 메모리 관리에 유리합니다.🔹 FSoftObjectPath란?특정 객체(UObject)의 경로 정보를 문자열로 저장하는 구조체입니다. 해당 객체를 직접 메모리에 로드하지 않고, 나중에 동적으로 로드할 수 있도록 설계되어 있습니다.FSoftObjectPath ObjectPath(TEXT("/Game/Blueprints/BP_MyActor.BP_MyActor"));UObject* .. 2025. 5. 14.
bShowMouseCursor – 언리얼 엔진에서 마우스 커서 보이기 bShowMouseCursor는 Unreal Engine에서 마우스 커서를 보이게 할지 숨길지를 결정하는 변수입니다. 이 값은 PlayerController에 존재하고, true로 설정하면 게임 화면 위에 마우스 커서가 보이게 됩니다.사용 목적UI를 조작할 때나, 마우스로 클릭해야 하는 인터페이스가 있는 경우 커서가 필요합니다. 반대로 일반적인 3D 게임에서는 보통 숨겨져 있습니다.사용 예시APlayerController* PC = GetWorld()->GetFirstPlayerController();if (PC){ PC->bShowMouseCursor = true;}이렇게 하면 커서가 항상 보이게 됩니다. 게임을 멈추고 메뉴를 띄우는 시점, 또는 UI 전용 모드에서는 이 설정이 필수입니다.함께 쓰.. 2025. 5. 13.
언리얼 UPROPERTY 필수 메타데이터 정리 언리얼 엔진에서 UPROPERTY()는 C++ 코드와 에디터, 블루프린트 간의 연결을 담당하는 핵심 매크로입니다.하지만 처음엔 안에 들어가는 다양한 메타데이터들이 생소하게 느껴질 수 있죠.이 글에서는 자주 쓰이는 지정자 위주로, 실제 사용 우선순위에 따라 정리해드립니다.1. BlueprintReadWrite / BlueprintReadOnlyUPROPERTY(BlueprintReadOnly)float MaxHealth;UPROPERTY(BlueprintReadWrite)int32 CurrentScore;블루프린트에서 읽기만 가능하거나, 읽기/쓰기를 모두 허용할지 설정합니다.2. EditAnywhere / EditDefaultsOnly / VisibleAnywhereUPROPERTY(EditAnywhere.. 2025. 5. 10.
언리얼 엔진에서 게임 저장하기 (SaveGame, JSON 저장/불러오기 예제 포함) 게임 저장과 불러오기 시스템 구현법 (SaveGame 클래스, JSON 저장 예제 포함)게임을 개발하다 보면 플레이어 진행 상황이나 상태를 저장하고, 다시 불러와야 하는 상황이 자주 생깁니다.언리얼 엔진에서는 USaveGame 클래스를 기반으로 저장 시스템을 쉽게 구성할 수 있습니다.이 글에서는 기본적인 SaveGame 클래스 사용법부터 JSON 저장/불러오기 예제까지 정리해보겠습니다.1. SaveGame 클래스 만들기UCLASS()class UMySaveGame : public USaveGame{ GENERATED_BODY()public: UPROPERTY() int32 PlayerLevel; UPROPERTY() FVector PlayerLocation;};저장할 데이터를 .. 2025. 5. 9.
언리얼 C++ TTuple 초보자 가이드 (복수 반환값, 안전 사용법, 실전 예제) TTuple은 언리얼 엔진에서 여러 개의 데이터를 묶어서 한 번에 다루고 싶을 때 사용하는 템플릿 컨테이너입니다.C++ 표준의 std::tuple과 유사하지만, 언리얼의 타입 시스템과 잘 통합되어 있으며 함수 반환값이나 간단한 데이터 묶음에 매우 유용합니다.1. 기본 사용법TTuple UserData = MakeTuple(42, TEXT("PlayerOne"));int32 ID = UserData.Get();FString Name = UserData.Get();UE_LOG(LogTemp, Log, TEXT("ID: %d, Name: %s"), ID, *Name);MakeTuple() 함수로 초기화Get() 방식으로 각 요소에 접근2. 사용하기 좋은 상황여러 개의 값을 하나의 함수에서 반환하고 싶을 때결과.. 2025. 5. 8.