2026.01.23

박민재 (Daype)·2026년 1월 23일

구현목록

  • GameMode C++ 클래스파일을 만들어서 기본값할당
  • PlayerController C++ 클래스 파일 만들어서 IMC, IA 할당하기

GameMode : 언리얼엔진에서 제공하는 클래스로 현재 레벨의 게임모드를 설정할 수 있게 해주는 클래스다.

PlayerController : 언리얼엔진에서 제공하는 클래스로 캐릭터나 폰의 움직임을 제어할 수 있게 관련된 기능을 기본적으로 제공해주는 클래스다.

구현과정

1.PlayerController C++ 와 GameMode C++ 만들기
2.InputMappingContext 할당을 위해 프로그램상에서 IMC와 IA 만들기
3.PlayerController에서 만든 IMC,IA 할당해주기위한 코드작성
4.만들어둔 PlayerController 블루프린트로 감싸기
5.IMC,IA 할당 후 키 입력 테스트


게임모드 C++파일 생성 후 사용할 Pawn 클래스와 PlayerControllerClass 기본값 할당


PlayerController C++ 파일 생성후 할당시킬 IMC, IA 변수 생성 이때, 감쌀 블루프린트에서 InputMappingContext 수정이 가능하게끔 언리얼엔진 리플렉션 시스템 등록 UPROPERTY() 사용

이후 생성자 초기화 리스트를 이용해 초기화

생성자 초기화리스트 : 해당 객체가 생성될때 기본값으로 초기화 되는곳 생성자 내부에 선언할경우 객체가 만들어진 후 대입되는 구조이지만 초기화리스트 사용시 대입이 아니라 즉시 해당 설정으로 생성됨 추가로, 데이터가 가벼울경우 미미한 차이지만 TArray 같이 데이터가 무거워지는경우 생성자 내부에 선언할경우 성능차이가 많이 날 수 있음. 할당되지 않은 객체가 아예 비어있을경우 어떤 오류가 생길지 모르기 때문에 nullptr 로 초기값 설정

BeginPlay() : LocalPlayer 변수선언 후 현재 필드위에 존재하는 LocalPlayer 대입
이후 예외처리, SubSystem 가져온다음 예외처리, 이후, MappingContext 가 존재한다면 SubSystem 에 등록

LocalPlayer : EnhancedInput에서 입력매핑을 실제로 들고 있는 주체 때문에 PlayerController 가 담당하고 있는 LocalPlayer를 호출, 입력매핑의 전환(자동차 탑승,전투모드)이 일어나도 기존캐릭터를 유지하고 입력매핑을 변환하기좋음

SubSystem : LocalPlayer에 붙어있는 입력 컨텍스트 관리자 InputMappingContext 를 부착하고 제거하기위해서 꼭 필요

직접적인 Movement 나 CameraMove를 구현하지 않았기때문에 입력매핑 여부만 확인하기위해 블루프린트를 통해 이벤트 호출 후 맵핑테스트 진행

0개의 댓글