• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

UPROPERTY(Transient) 속성 질문

24.02.12 20:38 작성 24.02.12 20:42 수정 조회수 313

0

항상 친절한 답변해주셔서 너무너무 감사합니다 ㅜㅜ

 

FRepMovement구조체 안에 변수들은 대부분 Transient속성을 사용하는데 (강의 내용 5분 ~~)Transient속성은 어떨때 쓰이는 걸까요?

 

전 강의에서 짤막하게 설명한다음 넘어갔던거 같은데 기억이 잘안나서요.. 검색을 해보니 직렬화를 해제하고 게임이 시작될때 마다 초기화가 되는 휘발성 변수라는 정보를 알게 되었는데 이게 무슨 말인지 잘 와 닿지 않아서요..

 

Transient 속성을 사용하면 어떤 효과가 있는걸까요??

게임이시작될때 초기화 되는 변수라면 거의 대부분의 변수가 Transient로 설정될거같은데...

사용되는 예시도 같이 알려주시면 감사하겠습니다..

 

네트워크에서 변수를 딱한번 쓰고 버리는 용도로 사용 되는것일까요?

답변 1

답변을 작성해보세요.

1

Transient 키워드는 UPROPERTY로 속성을 지정했지만, 디스크로부터 데이터를 로딩하는 것을 방지할 때 사용합니다. 예를 들어 작업한 레벨을 디스크에 저장할 때 레벨에 속한 액터 및 언리얼 오브젝트의 UPROPERTY 속성 값도 함께 저장됩니다. 예를 들어 어떤 캐릭터의 MaxHp값을 100으로 설정한 경우, 이 값은 디스크에 저장되어야 게임을 시작할 때 CurrentHp 값을 MaxHp 값으로 맞춰 시작할 수 있습니다.

그런데 게임에 따라 다르겠지만 전판에 플레이한 CurrentHp 값을 굳이 디스크에 저장할 필요가 없을 수도 있습니다. 매번 플레이 시작할 때마다 MaxHp 값으로 초기화 되기 때문이죠. 그렇다고 CurrentHp를 UPROPERTY로 지정하지 않으면 블루프린트 호환, 리플렉션등의 장점을 얻을 수 없습니다. 이런 경우 CurrentHp를 UPROPERTY로 지정하되, Transient 키워드를 붙이면 디스크 저장에서 제외되 불필요한 데이터 공간 낭비를 줄일 수 있습니다.