Network
- UPROPERY(Replicated)를 쓰려면 다음 함수 써야 함
void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const;
// 구현부
void APSPlayerInfo::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
Super::GetLifetimeReplicatedProps(OutLifetimeProps);
DOREPLIFETIME(class이름, var이름);
}
- DOREPLIFETIME는 #include "Net/UnrealNetwork.h" 해야 함
- GetLifetimeReplicatedProps이 선언되어 있는 class에서는 UFUNCTION()달면 안 됨 - 이유 모름
- PlayerState에서 CopyProperties 오버라이딩하면 level이 전환할 때 PlayerState 를 전달할 수 있음
void MyPlayerState::CopyProperties(APlayerState* PlayerState)
{
Super::CopyProperties(PlayerState);
if (PlayerState)
{
MyPlayerState* NewPlayerState = Cast<MyPlayerState>(PlayerState);
if (NewPlayerState)
{
// data 옮기기
NewPlayerState->PlayerName = PlayerName;
}
}
}
- OverrideWith - 게임 재접속 시 PlayerState 다시 세팅
- SeamlessTravelTo - travel시 실행되는거 같음, 이게 있으면 CopyProperties가 호출이 안됨
- Replicate를 활성화해서 spawn한 Actor는 Spawn한 쪽만 Owner가 설정됨
- Owner가 없는 Actor는 RPC가 무시됨
- PC에서 RPC하는게 좋음
- Actor가 replicate되더라도 mat을 바꾸거나 하는 동작이 Client에서는 일어나지 않음 → NetMulticast로 설정하여 양쪽에서 일어나게 해줘야 함
Blueprint
- UserWidget을 상속하여 만든 사용자 정의 UserWidget을 Bind하려면 UPROPERY(meta=(BindWidgetOptional))써야 함
etc
- NewObject<class>()는 생성자에서 사용하면 안됨
- AActor를 상속한 class는 SpawnActor로 생성해야 함