TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.
UABWeaponItemData 의 WeaponMesh 의 속성을 TSoftObjectPtr 으로 변경 및 Base 에서 팬딩 대기 및 처리까지 모두 수정하였으나 최초 실행 시 여전히 검이 로드가 된 상황입니다.
혹시 몰라 코드를 아예 복붙을 하였음에도 여전합니다.
위 내용중 코드 내용에 문제가 없다면, 강의 내용중 에디터에서 무언가 제가 행위를 빼먹은 것 같은데 죄송합니다. 계속 돌려보는데 잘 찾지를 못하겠습니다.
혹 TSoftObjectPtr 을 사용할 WeaponMesh 등을 에디터에서 무언가 설정해야 할 것이 있을까요?
별도로 아주 만약 TSoftObjectPtr 가 어떠한 캐릭터를 레퍼런싱 한다고 하면 그리고 그 캐릭터가 중간에 삭제가 된다고 한다면 다시 로드해야 하는 행위가 필요할까요?
아니면 tweakobjectptr 와 다르게 TSoftObjectPtr 를 단지 디스크에서 에셋을 참조하기 위한 역활로만 사용하는 것일까요? 즉 런타임에 도중 TSoftObjectPtr 에 무언가를 할당하는 것은 안되고 단지 디스크에서 객체를 참조하는 역활인지 그것이 헷갈립니다.
Answer 2
0
아마도 실습 과정에서 이미 로딩된 상태에서 사용하느라 관련된 문의가 몇 가지 있었습니다.
에디터를 재시작하면 정상적으로 동작한 것으로 파악됩니다.
아래는 관련 질문입니다.
https://inf.run/8K95N
0
안녕하세요, 인프런 AI 인턴입니다. 충실한 전복님.
언리얼 엔진에서 TSoftObjectPtr을 사용하는 방법에 대해 문의 주셨네요. 먼저, TSoftObjectPtr은 런타임에 객체를 필요할 때 로드하여 메모리에 올리는 소프트 레퍼런스입니다. 이를 통해 처음부터 모든 에셋을 메모리에 담지 않고 필요한 시점에 로딩함으로써 초기 로딩 시간을 줄이고 메모리 사용을 최적화할 수 있습니다.
TSoftObjectPtr로 전환 후에도 에셋이 로드되는 문제:
TSoftObjectPtr을 사용하고 있음에도 불구하고 실행 시 에셋이 로드된다면, 메모리에 해당 에셋이 남아 있는 다른 이유가 있을 수 있습니다. 가장 흔한 원인은 에디터가 에셋을 캐쉬하고 있을 가능성입니다. 에디터에서 변경 사항을 반영할 때 최악의 경우 에디터 캐시를 비우거나 새로운 프로젝트를 만들어서 테스트해보는 것을 추천드립니다.
Obj List Class=SkeletalMesh로 검사할 때, 메모리에 남아 있다면 이전 게임 세션에서 캐쉬 된 것일 수 있습니다.
TSoftObjectPtr의 역할:
TSoftObjectPtr는 디스크에서 해당 에셋의 경로만을 유지하고 있으며 실제 객체는 필요 시LoadSynchronous()를 통해 로드하게 됩니다. 따라서, 에디터에서 이 포인터를 설정할 때 단순히 경로가 맞는지 확인하면 되며, 별도의 추가 설정은 필요하지 않습니다.
- 이 포인터는 약 참조의 일종으로, 참조된 에셋이 삭제된다면 다시 로드해야 하며, 안전하게 사용할 수 있도록 로드 상태를 검사하는 로직 (예:
IsPending())이 필요합니다.
객체가 삭제될 때:
TSoftObjectPtr는 객체를 로드하지만 강제로 유지하지 않기 때문에, 객체가 삭제되면 다시 로드하려면LoadSynchronous()등을 통해 명시적으로 호출해야 합니다.
추가적으로, 이에 관련하여 참고할 수 있는 유사한 질문들이 있으니 아래 링크를 확인해 보시기 바랍니다:
- TSoftObjectPtr로 변경하여도 Weapon에셋이 로드가 됩니다.
- 소프트 레퍼런싱 관련 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
무한맵 제작과정중에 GetWorld 가 Nullptr 을 반환합니다.
0
46
2
12강 행동트리에서 질문이 있습니다.
0
52
1
위젯 사이즈랑 위치 질문드려요.
0
81
3
행동트리의 데코레이션 관련하여 질문이 있습니다.
0
94
3
VS 2026 의 문제일까요?
0
488
2
에셋참조 블루프린트질문
0
67
2
애님 몽타주 콤보 관련질문
0
70
2
ThirdPerson CDO 에러가 생깁니다.
0
95
3
캐릭터가 움직이지 않습니다.
0
181
4
쿠킹 폴더 지정시 , Item 이외에는 지정하지 않는지 궁금합니다.
0
62
2
7강에 나오는 생성자에 대해서 궁금합니다.
0
78
2
6강을 마무리하며 트레이스 채널 을 이해하지 못했습니다.
0
73
2
3강을 마무리 하며, 카메라가 움직이지 않습니다.
0
71
2
Use Controller Rotation 옵션값이 궁금합니다.
0
84
2
3강 입력 시스템 적용 중, 5.6 버전은 입력 매팅이 2개 입니다.
0
65
2
PlayerController 에 대헤 제가 잘못 이해한 것 같습니다.
0
78
2
13강 UpdateStat 부분에서 문제를 겪고 있습니다.
0
63
2
BP_PlayerController의 CustomEvent노드 이유가 궁금합니다.
0
64
1
콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점
0
72
2
CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.
0
115
2
언리얼 공부방법에 대해 질문드립니다.
0
87
2
4강 에서 이상한 그림자가 남습니다.
0
46
1
2강에서 카메라 회전안되시는분 참고
2
91
2
헤더 파일 추가에 대해서 질문있습니다
0
69
2

