inflearn logo
강의

講義

知識共有

ゲインウのアンリアルプログラミング Part2 - アンリアルゲームフレームワークの理解

8強アイテムシステム

TSoftObjectPtr 를 사용했음에도, 메모리에 로드 됩니다.

解決済みの質問

94

devyh87

投稿した質問数 17

0

  1. UABWeaponItemData 의 WeaponMesh 의 속성을 TSoftObjectPtr 으로 변경 및 Base 에서 팬딩 대기 및 처리까지 모두 수정하였으나 최초 실행 시 여전히 검이 로드가 된 상황입니다.

  2. 혹시 몰라 코드를 아예 복붙을 하였음에도 여전합니다.

위 내용중 코드 내용에 문제가 없다면, 강의 내용중 에디터에서 무언가 제가 행위를 빼먹은 것 같은데 죄송합니다. 계속 돌려보는데 잘 찾지를 못하겠습니다.

 

혹 TSoftObjectPtr 을 사용할 WeaponMesh 등을 에디터에서 무언가 설정해야 할 것이 있을까요?

 

별도로 아주 만약 TSoftObjectPtr 가 어떠한 캐릭터를 레퍼런싱 한다고 하면 그리고 그 캐릭터가 중간에 삭제가 된다고 한다면 다시 로드해야 하는 행위가 필요할까요?

아니면 tweakobjectptr 와 다르게 TSoftObjectPtr 를 단지 디스크에서 에셋을 참조하기 위한 역활로만 사용하는 것일까요? 즉 런타임에 도중 TSoftObjectPtr 에 무언가를 할당하는 것은 안되고 단지 디스크에서 객체를 참조하는 역활인지 그것이 헷갈립니다.

 

unreal-engine ue-blueprint 언리얼-c++

回答 2

0

ideugu

아마도 실습 과정에서 이미 로딩된 상태에서 사용하느라 관련된 문의가 몇 가지 있었습니다.
에디터를 재시작하면 정상적으로 동작한 것으로 파악됩니다.
아래는 관련 질문입니다.
https://inf.run/8K95N

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 충실한 전복님.

언리얼 엔진에서 TSoftObjectPtr을 사용하는 방법에 대해 문의 주셨네요. 먼저, TSoftObjectPtr은 런타임에 객체를 필요할 때 로드하여 메모리에 올리는 소프트 레퍼런스입니다. 이를 통해 처음부터 모든 에셋을 메모리에 담지 않고 필요한 시점에 로딩함으로써 초기 로딩 시간을 줄이고 메모리 사용을 최적화할 수 있습니다.

  1. TSoftObjectPtr로 전환 후에도 에셋이 로드되는 문제:

    • TSoftObjectPtr을 사용하고 있음에도 불구하고 실행 시 에셋이 로드된다면, 메모리에 해당 에셋이 남아 있는 다른 이유가 있을 수 있습니다. 가장 흔한 원인은 에디터가 에셋을 캐쉬하고 있을 가능성입니다. 에디터에서 변경 사항을 반영할 때 최악의 경우 에디터 캐시를 비우거나 새로운 프로젝트를 만들어서 테스트해보는 것을 추천드립니다.
    • Obj List Class=SkeletalMesh로 검사할 때, 메모리에 남아 있다면 이전 게임 세션에서 캐쉬 된 것일 수 있습니다.
  2. TSoftObjectPtr의 역할:

    • TSoftObjectPtr는 디스크에서 해당 에셋의 경로만을 유지하고 있으며 실제 객체는 필요 시 LoadSynchronous()를 통해 로드하게 됩니다. 따라서, 에디터에서 이 포인터를 설정할 때 단순히 경로가 맞는지 확인하면 되며, 별도의 추가 설정은 필요하지 않습니다.
    • 이 포인터는 약 참조의 일종으로, 참조된 에셋이 삭제된다면 다시 로드해야 하며, 안전하게 사용할 수 있도록 로드 상태를 검사하는 로직 (예: IsPending())이 필요합니다.
  3. 객체가 삭제될 때:

    • 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

114

2

언리얼 공부방법에 대해 질문드립니다.

0

87

2

4강 에서 이상한 그림자가 남습니다.

0

46

1

2강에서 카메라 회전안되시는분 참고

2

91

2

헤더 파일 추가에 대해서 질문있습니다

0

69

2