게임 개발/학습 일지

언리얼 내배캠 마스터반 - 소프트 레퍼런스

이개 2026. 6. 8. 09:56

C++ 액터를 하나 만든다. 이름은 TestActor

소프트 오브젝트 레퍼런스
소프트 클래스 레퍼런스
비동기, 동기, 데이터 에셋
 
UPROPERTY(EditAnywhere)
ConstructorHelper: ...(하드코딩으로 경로, 위치 넣어줌. 찾으면 반환, 없으면 nullptr)
간접 프로퍼티 
  • 주소만 들고 있다가 로드 시점을 정해주는 것
 
블루프린트에서 변수를 생성하면 오브젝트 레퍼런스, 클래스 레퍼런스, 소프트 오브젝트 레퍼런스, 소프트 클래스 오브젝트 레퍼런스가 있다. 소프트 오브젝트 레퍼런스가 뭘까?
 
일반 레퍼런스는 하드 레퍼런스다. 항상 같이 로드된다.
소프트 오브젝트 레퍼런스는 필요할 때만 로드된다.
  • 예를 들면 특정 스테이지에서만 나타나는 몬스터, 고해상도 텍스쳐 등이다.
소프트 오브젝트 만들기
 
동기 로드 함수
 
이 상태로 빌드
 
보통 메인 스레드에서 동기로 로드를 하는데, 리소스를 많이 먹는 오브젝트는 서브스레드에서 로드를 하는 것이 비동기.
 
 
액터를 화면에 올리고 메시에 아직 아무데서도 사용되지 않은 메시를 할당한다.
 
처음 실행 시
 
두 번째 실행 시
 
엔진 실행 자체가 게임 실행이나 다름없기 때문에 엔진 자체를 끄지 않고 두 번째 실행하면 이미 오브젝트가 로드가 되어있는 것이다.
 
비동기 호출
새로운 함수 MyOnLoadCompleted 선언
 
아래 헤더를 인클루드해주어야한다.
  • #include "Engine/AssetManager.h"
  • #include "Engine/StreamableManager.h"
 
LoadWithSoftPtr()의 이미 로드된 부분 밑에 추가해준다. RequestAsyncLoad가 비동기로 가져와서 바인딩 해주는 부분이다. ToSoftObejctPath는 경로를 가져와주는 것이다.