본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진 5 에서 엑터의 동적 생성 (Dynamic Creation) 은 무엇인가요?

by 밝음의기둥 2024. 10. 14.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진 5 에서 엑터의 동적 생성 (Dynamic Creation) 은 무엇인지 물어봤습니다.


질문 >

언리얼 엔진 5 에서 엑터의 동적 생성 (Dynamic Creation) 은 무엇인가요?

답변 >

언리얼 엔진 5에서 **엑터(Actor)의 동적 생성(Dynamic Creation)**은 게임 실행 중에 코드로 새로운 액터(오브젝트)를 생성하고, 월드(World) 내에 배치하는 기능을 말합니다. 이 과정은 게임 로직에 따라 액터를 필요할 때 생성하거나, 레벨 디자이너가 미리 배치하지 않은 오브젝트를 생성하는 데 사용됩니다.

동적 생성의 주요 개념:

  1. 동적 액터 생성:
    • 동적 생성은 주로 C++ 코드나 블루프린트에서 이루어지며, 런타임 동안 특정 조건이 충족될 때 새로운 액터를 월드에 생성할 수 있습니다. 이를 통해 게임 내에서 스폰 포인트, 적 생성, 아이템 배치 등 다양한 게임 이벤트를 처리할 수 있습니다.
  2. UWorld::SpawnActor<>() 함수:
    • C++에서 동적 액터를 생성할 때 가장 많이 사용하는 함수는 UWorld::SpawnActor<>()입니다. 이 함수는 특정 클래스의 액터를 월드에 생성하고, 생성된 액터의 위치와 회전을 설정할 수 있습니다.
    FVector SpawnLocation = FVector(0.0f, 0.0f, 100.0f); // 생성 위치
    FRotator SpawnRotation = FRotator::ZeroRotator;       // 회전 각도
    FActorSpawnParameters SpawnParams;
    
    // MyActorClass는 생성할 액터의 클래스
    AMyActor* NewActor = GetWorld()->SpawnActor<AMyActor>(MyActorClass, SpawnLocation, SpawnRotation, SpawnParams);
    
    
    • SpawnActor<>() 함수는 여러 매개변수를 받으며, 이를 통해 액터의 생성 위치, 회전, 초기화 설정을 지정할 수 있습니다.
  3. 블루프린트에서 동적 생성:
    • 블루프린트에서도 동적 액터 생성을 간편하게 수행할 수 있습니다. 블루프린트에서는 "Spawn Actor from Class" 노드를 사용하여 특정 클래스로부터 액터를 생성하고, 위치와 회전을 설정할 수 있습니다.
    • 이 방법을 통해 복잡한 코드 작성 없이도 게임 내에서 동적 이벤트와 상호작용을 쉽게 설정할 수 있습니다.
  4. 스폰 파라미터:
    • FActorSpawnParameters는 액터 생성 시 사용하는 추가적인 파라미터로, 생성된 액터가 어떤 설정으로 스폰될지 결정합니다. 예를 들어, 액터의 **소유자(Owner)**를 지정하거나 충돌 검사 여부를 설정할 수 있습니다.
    • bNoCollisionFail 같은 파라미터를 설정하면, 충돌이 발생해도 강제로 액터를 생성할 수 있습니다.

동적 생성의 주요 활용 예시:

  • 적 또는 NPC 생성: 플레이어의 위치에 따라 적을 동적으로 생성하여 적절한 난이도를 유지할 수 있습니다.
  • 아이템 드롭: 플레이어가 몬스터를 처치할 때, 랜덤으로 아이템을 동적으로 생성하여 다양한 게임플레이를 제공할 수 있습니다.
  • 월드 빌딩: 프로시저럴 방식으로 레벨이나 월드를 확장해 나가는 경우, 동적 액터 생성을 사용하여 필요한 오브젝트나 건물 등을 생성합니다.

주의사항:

  • Garbage Collection: 동적으로 생성된 액터는 적절하게 제거되지 않으면 메모리 누수가 발생할 수 있으므로, 더 이상 필요하지 않은 액터는 Destroy() 함수를 통해 메모리에서 삭제해주어야 합니다.
  • 네트워크 복제: 멀티플레이어 환경에서는 동적 생성된 액터가 클라이언트와 서버 사이에서 적절하게 동기화되어야 하며, 이를 위해서는 네트워크 복제를 위한 추가 설정이 필요합니다.

동적 생성에 대한 코드 예시:

if (MyActorClass)
{
    FVector Location(0.0f, 0.0f, 0.0f);
    FRotator Rotation(0.0f, 0.0f, 0.0f);
    FActorSpawnParameters SpawnParams;

    AActor* SpawnedActor = GetWorld()->SpawnActor<AActor>(MyActorClass, Location, Rotation, SpawnParams);
    if (SpawnedActor)
    {
        UE_LOG(LogTemp, Warning, TEXT("Actor spawned successfully!"));
    }
}

이 코드에서는 특정 위치와 회전값으로 MyActorClass 타입의 액터를 동적으로 생성하고, 생성이 성공했을 때 로그를 출력합니다.

언리얼 엔진 5에서 동적 액터 생성은 게임의 유연성과 확장성을 크게 높여주며, 런타임 동안 유동적으로 게임의 콘텐츠를 변화시킬 수 있는 강력한 도구입니다(Unreal Engine)(Puget Systems).


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

 

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com

 


반응형