티스토리 뷰

🟩 오늘의 목표

  • std::vector의 요소 추가 방식인 push_back과 emplace_back의 차이점을 배우고 상황에 맞는 효율적인 사용법을 익힌다.
  • C++와 애니메이션 블루프린트(ABP) 간의 데이터 통신 및 실시간 변수 연동 원리를 배운다.
  • LineTrace를 활용한 지면 감지 안정화와 Snapping 로직을 통한 착륙 처리 기법을 배운다.
  • State Alias와 트랜지션 조건 최적화를 통해 애니메이션 전환 버그를 해결하고 가독성을 높이는 법을 배운다.

 

🟧 1. C++ Vector 요소 추가 방식 비교


🟦 push_back과 emplace_back의 작동 원리

  • push_back은 이미 완성된 객체를 상자에 넣는 것과 같으며, 이미 만들어진 객체를 복사하거나 이동시키는 방식으로 작동함을 배웠다.
  • emplace_back은 상자 안에서 객체를 직접 조립하는 것과 같으며, 객체 생성에 필요한 재료만 전달하여 메모리 공간 안에서 직접 생성하는 방식을 배웠다.
구분 push_back emplace_back
비유 완성된 선물을 상자에 넣기 상자 안에서 선물을 직접 조립하기
작동 방식 객체를 복사 또는 이동 재료를 전달하여 현지 생성
장점 전통적이고 익숙한 방식 불필요한 복사/이동을 줄여 성능상 유리함

 

🟦 실무에서의 활용 트렌드

  • 현대 C++과 언리얼 엔진 등 실무에서는 성능 이득의 가능성이 있는 emplace_back 사용을 권장하는 추세임을 배웠다.
  • 이미 만들어진 변수를 넣을 때는 두 방식 모두 복사 생성자를 호출하게 되어 성능 차이가 거의 없으므로 상황에 맞는 선택이 중요함을 배웠다.
  • 성능 향상의 핵심은 요소 추가 방식뿐만 아니라 const auto&를 사용해 불필요한 복사본 생성을 막는 것임을 배웠다.

 

🟧 2. 언리얼 C++와 애니메이션 블루프린트 연동 및 최적화


🟦 C++와 애니메이션 블루프린트(ABP) 간 변수 통신 해결

  • C++에서 계산한 데이터가 ABP로 전달되지 않을 때는 Cast 노드 이후의 실행선 연결 상태와 변수 세팅 노드의 흐름을 확인해야 함을 배웠다.
  • 변수를 UPROPERTY(BlueprintReadOnly)로 설정하여 노출시키고, ABP 이벤트 그래프에서 하얀색 실행선을 SET 노드들까지 끊김 없이 연결하여 실시간 데이터를 갱신하는 방법을 배웠다.

🟦 지면 감지(LineTrace) 및 착륙 로직 안정화

  • LineTrace의 거리가 캡슐 높이와 너무 정확히 일치하면 소수점 오차로 감지에 실패할 수 있으므로, 끝점에 약 10.0f 정도의 여유값을 추가하여 안정성을 높이는 법을 배웠다.
  • 하강 중 지면 감지 시 Z축 좌표를 강제로 시작 높이로 고정하는 Snapping 로직을 추가하여 캐릭터의 발이 지면에 정확히 밀착되도록 수정하는 법을 배웠다.

🟦 State Alias를 활용한 애니메이션 전환 최적화

  • State Alias 목록에 자기 자신(Fly)이 포함되면 매 프레임 자가 전이가 발생하여 애니메이션이 무한 재시작되는 버그가 생길 수 있음을 배웠다.
  • State Alias 설정에서 자기 자신을 제외하여 버그를 방지하고, 개별 트랜지션을 Alias 하나로 통합하여 로직의 가독성을 높이는 최적화 기법을 배웠다.

🟦 비행 및 체공(Hovering) 조건 개선

  • 트랜지션 규칙에 속도 조건을 넣으면 공중 정지 시 애니메이션이 풀릴 수 있으므로, 유지 조건을 IsFlying 변수 하나로 단순화하여 속도와 관계없이 날개짓을 유지하는 법을 배웠다.
  • C++ 생성자와 ABP 변수 패널에서 초기값을 명확히 설정하여 첫 프레임부터 상태 판단이 정확하게 이루어지도록 초기화하는 법을 배웠다.

 

🟫 오늘 느낀 점

메모리 최적화를 위한 C++ 문법과 애니메이션 블루프린트의 실무적인 디테일을 조율하며 안정적인 프로젝트 설계의 중요성을 깊이 체감했다.

'내일배움캠프 Unreal_7기 > 본캠프' 카테고리의 다른 글

TIL - 38일차  (1) 2026.01.21
TIL - 37일차  (1) 2026.01.20
TIL - 35일차  (1) 2026.01.16
TIL - 34일차  (0) 2026.01.15
TIL - 33일차  (0) 2026.01.14