오늘의 코드카타
에어컨
- 범위가 넓은 dp
- LV3 - 11%
-> 문제 풀이
오늘의 공부
팀 프로젝트 진행 내용
1. 문 열고/닫음에 따른 런타임 네비 메시 생성
- 공부했던 내용을 바탕으로 내비게이션 모디파이어 컴포넌트를 할당해서, 문을 열고 닫음에 따라 AreaClass 변경을 통해 AI가 길을 왔다갔다 할 수 있게 함
- 주의할 점으로 스태틱 메시 컴포넌트, 콜리전 컴포넌트가 NavMesh 빌드에 영향을 끼칠 수 있기 때문에 테스트를 통해서 스태틱 메시 컴포넌트의
CanEverAffectNavigation 설정
AEGDoor::AEGDoor()
{
...
NavModifier = CreateDefaultSubobject<UNavModifierComponent>(TEXT("NavModifier"));
NavModifier->SetAreaClass(UNavArea_Null::StaticClass());
// 주의할 점 : 스태틱 메시가 NavMesh 빌드에서 길을 막게 됨
StaticMesh->SetCanEverAffectNavigation(false);
}
void AEGDoor::Interact_Implementation()
{
if (HasAuthority())
{
if (!DoorTimeline->IsPlaying())
{
bIsOpen = !bIsOpen;
OnRep_DoorState();
// 서버에서만 NavMesh를 관리
if (bIsOpen)
{
NavModifier->SetAreaClass(UNavArea_Default::StaticClass());
}
else
{
NavModifier->SetAreaClass(UNavArea_Null::StaticClass());
}
}
}
}
정리 노트
오늘의 CS
UObject 상속
- 언리얼 오브젝트 시스템의 가장 기본 단위
- 월드에 존재하지 않음 -> 화면에 나타나지 않고, 트랜스폼 개념도 없음
- 기본적으로 메모리 상에만 존재하는 객체
- 기본적으로 리플리케이션을 지원하지 않음
-> 리플리케이션하려면 반드시 어떤 Actor에 소유되어야 함
- 활용
- 데이터 컨테이너
- 서브 시스템 컴포넌트 (게임 인스턴스, 세이브 데이터)
- 로직만 담는 유틸리티 객체
AActor 상속
UObject를 상속받은 게임 세계에 존재할 수 있는 오브젝트
- 월드에 스폰 가능 -> 트랜스폼을 가짐
- 생명주기를 가짐 ->
BeginPlay(), Tick() 같은 함수로 월드에서 동작
- 컴포넌트를 붙여서 확장 가능
- 기본적으로 네트워크 리플리케이션을 지원 :
bReplicates 플래그, RPC
- 활용
- 캐릭터, 몬스터, 아이템 오브젝트
- 게임 세계에 배치되어야 하는 오브젝트 (문, 상자)