언리얼에서 참 온갖 억까를 많이 당하면서 살고 있는데
오늘 다룰 주제는 에디터에서는 되고 패키징을 할때는 안되는 코드를 리뷰해보고자 한다.
그놈의 정체는 바로 StaticLoadObject()!!!
주석 친 부분이 기존 생성 원리인데
블루프린트가 있는 경로를 받아서 (*RefPath) spawn Actor 를 하는 수순이다.
문제는 이렇게 하면 Path 를 우리가 예를 들어 dictionary로 구성해서
key 값을 받아서 해당 경로를 읽어오도록 한다면
"Game/actor.actor"
이렇게 해야 된다.

근데 그렇게 하면 블루프린트를 패키징 하고나서 경로를 읽어오지 못한다.
경로는
"/Script/Engine.Blueprint'Game/actor.actor_C'"
이런식으로 앞에 /Script/Engine.Blueprint 와
사이에 해당 경로 'Game/actor.actor_C'" 등
작은따옴표도 있어야하고 확장자 뒤에는 _C 도 붙여야한다.
근데 저 병신같은 staticloadObject는 이렇게 경로를 선언하면 읽어오질 못한다.
그냥 쌩 폴더 경로만 읽을 줄 아는 병신이다. 에디터에서는 작동하나 패키징에서는 병신이 되는 함수이다.
그래서 쓰면 안된다.
대신 써야 되는 함수는
딕셔너리 함수그냥 수행해서
Path를 의미하는 변수 BlueprintPath (String 값)에 PlayerRefMap.FindRef(RefKey); 이런식으로 키값 던져서 FindRef 함수로 찾도록 하고
auto ClassToSpawn = LoadClass<AActor>(nullptr, *BlueprintPath); 로 해서 이걸로 생성함수를 진행하도록 한다.
스폰 트랜스폼값과 크기 등을 후에 지정한다음 생성하면 된다.
다시한번 StaticLoadObject 는 쓰지 말도록 하자.
| 랜드스케이프의 SplineMesh가 사라졌을때 복구하는 방법 (0) | 2025.03.08 |
|---|---|
| 차량 상태 표기 GUI (0) | 2025.03.08 |
| 언리얼 레벨 렌더링 퀄리티를 패키지에서도 조절하는 방법 (0) | 2025.02.18 |
| 카오스 비히클 수동 기어 조작 완성 (Manual Drive for Ground Vehicle) (0) | 2025.02.06 |
| TArray<FVector> 타입 변수 초기화 (0) | 2024.08.10 |