09.29 - TIL

김혁·2025년 9월 29일

TIL

목록 보기
28/84

오늘의 코드카타

에어컨

오늘의 공부

팀 프로젝트 진행 내용

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
  • 활용
    • 캐릭터, 몬스터, 아이템 오브젝트
    • 게임 세계에 배치되어야 하는 오브젝트 (문, 상자)
profile
게임 개발자를 향해..

0개의 댓글