⭐ Unreal Engine/UE Debugging Log

[UE] FNetDeltaSerializeInfo 사용시 레퍼런스로 넘기는 배열 매개변수는 UPROERTY로 리플리케이트 해주기

Designerd 2024. 4. 15. 20:07

 

FNetDeltaSerializeInfo 사용시 레퍼런스로 넘기는 배열 매개변수는 UPROERTY로 리플리케이트 해주기


 

 

문제상황

 

인텔리센스 오류는 나지 않지만 컴파일이 실패했다.  

 

FastArrayDeltaSerialize< OOO, OOO >( 첫번째 인자, 두번째 인자, 세번째 매개변수);

 

 

 

위의 문구를 잘 읽어보면 

 

error C2338: static_assert failed: 'Auto deduced FastArrayItemType is invalid or differs from the specified type. Make sure that the FastArraySerializer has a single replicated array property.'

 

레퍼런스로 넘겨주는 첫번째 매개변수 TArray는 replicated array property여야 한다고 적혀있다. 

 


 

 

UPROPERTY를 붙인 후 컴파일 통과 

 

컴파일 에러에서 제시한 것처럼 UPROPERTY를 붙이면 정상적으로 통과된다. 

 


 

 

FastArraySerializer 클래스에 내에 선언된 FastArrayDeltaSerialize 함수

 

 

밑줄친 부분으로 들어가는 매개변수는 replicated된 TArray여야 한다.

 

 

이 함수의 주석을 읽어보면 아래와 같다.

 

It's possible that we end up calling this method on clients before we've actually received anything from the server (Net Conditions, Static Actors, etc.)

 

That should be fine though, because none of the GUID Tracking work should actually do anything until after we've received.

 

서버에서 데이터를 받기 전에 클라이언트에서 이 함수를 호출할 가능성이 있다.

그렇기 때문에 UPROPERTY로 GC 싸이클로 관리하여 해당 TArray 변수가 일찍 삭제되는 것을 방지하여야 한다.