개발일지공부아이디어
    • 4월
    • 3월
    • 2월
    • 1월
  • 22

    26. 4. 22.

  • 21

    26. 4. 21.

  • 20

    26. 4. 20.

  • 17

    26. 4. 17.

  • 16

    26. 4. 16.

  • 15

    26. 4. 15.

  • 14

    26. 4. 14.

  • 10

    26. 4. 10.

  • 09

    26. 4. 9.

  • 08

    26. 4. 8.

로딩 중...

2026. 4. 20.

복습

변수 초기화 방식

// 1. 복사 초기화 (Copy Initialization) - 당신이 알고 있는 방식int a = 10;std::string name = "test";// 2. 직접 초기화 (Direct Initialization) - 선택한 코드가 사용하는 방식int b(20);std::string name2("test");ConstructorHelpers::FObjectFinder<UStaticMesh> FountainBodyMesh(TEXT("path"));// 3. 유니폼 초기화 (Uniform Initialization) - C++11 이후int c{30};std::string name3{"test"};// 4. 복사 리스트 초기화int d = {40};

입력 시스템 개요

  • 플레이어의 입력은 컨트롤러를 통해 폰으로 전달됨
  • 입력에 대한 '해석'을 컨트롤러가 처리할 수도, 폰이 처리할 수도 있는데 일반적으로는 폰에서 처리하도록 함

캐릭터 컨트롤 설정

일반적으로 컨트롤러와 폰, 카메라, 스프링암, 캐릭터 무브먼트의 다섯 가지 요소를 사용해 설정.

  • 컨트롤러 : 입력자의 의지(목표 지점)을 지정할 때 사용. ControlRotation 속성
  • 폰 : 폰의 트랜스폼을 지정
  • 카메라 : 화면 구도를 설정하기 사용. 주로 1인칭 시점에서 사용
  • 스프링 암 : 화면 구도를 설정하기 위해 사용. 주로 3인칭 시점에서 사용
  • 캐릭터 무브먼트 : 캐릭터의 이동과 회전을 조정하는 용도로 사용

팁: DisplayALl PlayerController ControlRotation 명령어를 언리얼 CLI에 입력하면 실시간 회전 상태를 볼 수 있음

: 1 (비트필드)

uint32 buseControllerDesiredRotation : 1; // = true;랑 동일
  • 의미: 이 변수는 1비트만 사용하겠다는 선언
  • 메모리: 1비트만 사용 (32배 절약)
  • 네트워크 전송 시에는 uint8로 바꾸지만, 사용할 땐 32비트도 상관 없음

1비트 쓸건데 32비트 메모리 확보는 너무 크지 않냐

// 이 5개 변수가 실제로는 하나의 uint32(4바이트)에 저장됩니다uint32 bDoCollisionTest : 1;         // 비트 0uint32 bUsePawnControlRotation : 1;  // 비트 1  uint32 bInheritPitch : 1;            // 비트 2uint32 bInheritYaw : 1;              // 비트 3uint32 bInheritRoll : 1;             // 비트 4// 총 5비트만 사용, 나머지 27비트는 여유

Unreal Engine이 uint32 : 1 비트필드를 사용하는 이유:

  • 메모리 효율성: 여러 bool을 하나의 정수에 패킹
  • 직렬화 최적화: 네트워크/저장 시 효율적
  • 표준화: Unreal의 일관된 코딩 스타일
왼쪽 화살표오른쪽 화살표