TIL(Today I Learned)

2026/06/19

BreadMushroom 2026. 6. 19. 20:30

TIL 쓰기전 항상 명심 할 것

작성 타이밍: 공부가 다 끝나고 쓰려고 하면 지쳐서 안쓴다. 모르는게 있을 때 즉시 적기

작성 강도: 메모가 절대로 '공부'나 '또 하나의 짐'처럼 무거워지면 안됨.


 

[개념] NetLoadOnClient 속성

  • 한 줄 요약: 레벨에 배치된 액터를 클라이언트에서도 로드할지 결정하는 네트워크 속성
  • 언제 써?:레벨에 정적으로 배치되어 동기화 해줄 필요 없는 액터(맵에 배치된 문, 상자, 장식물, 트리거)
  • 코드: 에디터에서 엑터 블루프린트로 설정하는게 편함

[개념] Replication Notify

  • 한 줄 요약: Replicated 변수 값이 클라이언트에서 변경되었을 때 자동으로 호출되는 알림 함수
  • 언제 써?:서버에서 바뀐 값이 클라이언트에 전달된 뒤, 클라이언트 쪽에서 추가 처리가 필요할 때( 값이 바뀐 순간에 반응해야 할 때)
    • 체력이 바뀌면 HP UI 갱신
  • 코드: 
//헤더파일

UPROPERTY(ReplicatedUsing = OnRep_IsOpen) //변경할 속성의 UPROPERTY() 매크로에는 ReplicatedUsing 키워드
bool bIsOpen;

UFUNCTION()
void OnRep_IsOpen(); //콜백함수에는 UFUNCTION() 매크로와 OnRep_ 접두사가 붙음

//cpp파일

void AMyDoorActor::OnRep_IsOpen()
{
    //문 열림 애니메이션 재생, UI 갱신, 사운드 재생
}

void AMyDoorActor::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
    Super::GetLifetimeReplicatedProps(OutLifetimeProps);

    DOREPLIFETIME(AMyDoorActor, bIsOpen);
}

 

[개념] NetUpdateFrequency-최적화 기법

  • 한 줄 요약: 액터의 Replication 정보를 1초에 최대 몇 번까지 클라이언트에 보낼지 정하는 값(단, 최대값이지 그 값을 계속 유지한다는 보장은 없음)
  • 언제 써?:멀티플레이에서 액터의 상태를 얼마나 자주 동기화할지 조절할 때
  • 코드:
    AMyCharacter::AMyCharacter()
    {
        bReplicates = true;
    
        // 1초에 최대 60번 네트워크 업데이트 시도
        NetUpdateFrequency = 60.0f;
    }
    
    SetNetUpdateFrequency() //함수로도 변경가능

[개념] UPROPERTY(Meta=(AllowPrivateAccess))

  • 한 줄 요약: C++ private인데 블루프린트에 보이게 예외처리 해주는 메타 키워드
  • 언제 써?:디자이너들이 블루프린트에서 편집가능하게 할 변수들
  • 코드:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Meta=(AllowPrivateAccess))
TObjectPtr<USceneComponent> SceneRoot;

 

[개념] TSubclassOf<>

  • 한 줄 요약: 맵에 배치된 액터가 아니라, 스폰할 '블루프린트 원본 에셋' 지정용 주머니
  • 언제 써?:디자이너들이 블루프린트에서 편집가능하게 할 변수들
  • 코드:
TSubclassOf<AActor> LandMineClass;

 

 

'TIL(Today I Learned)' 카테고리의 다른 글

2026/06/25  (0) 2026.06.25
2026/06/24  (0) 2026.06.24
2026/06/18  (0) 2026.06.18
2026/06/16  (0) 2026.06.16
2026/06/15  (0) 2026.06.15