SetupAttachment 와 AttachToComponent 의 차이.
- 공통점
부모 컴포넌트의 자식 계층으로 설정하며, 소켓 이름을 지정한 경우 계층뿐만 아닌 소켓 위치로 원점이 정해진다.- 차이점.
SetupAttachment 와 같은 경우 생성자에서 사용하며 AttachToComponent 는 생성자에서 사용되지 않는다.
또한 AttachToComponent는 부착 규칙이 존재한다.
SetupInputComponent 는 BeginPlay 보다 먼저 호출된다.
Unreal Engine의 Template Meta Programming Utility로, 한 PointerType이 다른 PointerType으로 변환 가능한지 확인하는 데 사용되는 구조체입니다.
일반적으로 TPointerIsConvertibleFromTo는 두 가지 Template Argument를 받으며, 첫 번째 argument가 두 번째 argument로 변환될 수 있는지 여부를 판단합니다
- check
주어진 조건이 false 일 경우 프로그램을 강제 종료한다.- checkf
check 와 동일하나 실패할 경우 User Custom Message를 함께 출력한다.- ensure
Warning Message를 출력하나 프로그램을 종료하지 않고 코드가 계속 실행된다.
Synchronous Load
Synchronous Load는 자원을 요청하면 해당 자원이 완전히 로드될 때까지 프로그램의 실행이 멈추는 방식입니다. Loading이 완료되면 그때야 다음 작업을 수행할 수 있습니다.
- 특징
- Blocking : 요청한 자원이 로드될 때까지 프로그램이 멈춥니다. 즉, CPU는 해당 작업이 끝날 때까지 기다려야 합니다.
- 단순함: 구현이 비교적 간단하고 직관적입니다. 자원을 로드한 후에 바로 사용할 수 있기 때문에 상태 관리가 용이합니다.
- 사용자 경험 저하 : 자원이 로드되는 동안 게임이나 애플리케이션이 멈추거나, "멈춤 현상"이 발생할 수 있어 사용자 경험이 나빠질 수 있습니다.
- 사용 사례
- 게임에서 작은 데이터를 즉시 로드해야 하는 경우.
- 로딩 중 화면 전환을 막고, 로드가 끝난 후 실행을 계속해야 하는 상황.
- 장점
- 구현이 간단하고, 데이터 로드가 끝나면 바로 사용할 수 있어 논리적으로 명확합니다.
- 단점
- 큰 데이터
고해상도 텍스처나 오브젝트로드 시 게임이 멈추거나 프레임 드랍이 발생할 수 있습니다.- 성능 저하의 원인이 될 수 있어 큰 자원 로딩에 적합하지 않습니다.
Asynchronous Load
Asynchronous Load는 자원을 요청한 후, 자원이 완전히 로드될 때까지 기다리지 않고, 프로그램이 다른 작업을 계속할 수 있는 방식입니다. 자원이 로드된 후에 별도의 콜백이나 이벤트를 통해 해당 자원을 사용할 수 있게 됩니다.
- 특징
- Non-blocking : 자원이 로드되는 동안에도 프로그램이 계속 실행됩니다. CPU는 로드 작업과 상관없이 다른 작업을 수행할 수 있습니다.
- 복잡성 : 구현이 조금 더 복잡할 수 있습니다. 로드 완료 여부를 체크하거나, 완료 시점에 처리할 로직을 따로 작성해야 합니다.
- 사용자 경험 상승 : 로드가 백그라운드에서 이루어지기 때문에 게임이나 프로그램의 흐름이 끊기지 않고, 더 부드러운 사용자 경험을 제공합니다.
- 사용 사례
- 게임에서 큰 자원을 로드할 때(예: 새로운 레벨이나 오픈 월드 환경에서 큰 맵을 로드할 때).
- UI가 계속 동작하면서 백그라운드에서 데이터를 로드해야 할 때.
- 필요한 자원을 로드하는 동안 플레이어가 게임을 계속할 수 있게 하고, 준비가 되면 해당 자원을 사용하는 경우.
- 장점
- 자원 로딩 중에도 프로그램이 계속 실행되어 사용자 경험이 부드럽습니다.
- 큰 자원이나 많은 자원을 처리할 때도 성능에 영향을 덜 미칩니다.
- 단점
- 자원이 언제 로드될지 모르기 때문에 로드 완료 여부를 추적하고, 완료 후 자원을 사용하는 로직을 따로 관리해야 합니다.
- 코드가 Synchronous Load보다 복잡해질 수 있습니다.