분류 전체보기 115

[UE4] Animation Blueprint

Animation Blueprint 코드로 에셋 경로를 복사해와 일일히 애니메이션을 지정하는 방법은 게임의 규모가 커지만 관리적인 한계에 부딪힌다. 그래서 언리얼은 체계적으로 애니메이션을 설계하도록 별도의 시스템을 제공하는데, 이를 애니메이션 블루프린트라고 한다. 생성 Animation Blueprint Asset을 생성하려면 콘텐츠 브라우저에서 애니메이션 폴더를 선택한 후 신규추가>애니메이션>애니메이션 블루프린트 메뉴를 선택하고 이 블루프린트와 연결될 캐릭터 스켈레톤 에셋을 지정해주면 된다. 관리 애니메이션 블루프린트는 애님그래프 로직에 따라 동작하는 캐릭터 애니메이션 시스템을 구동시키는데, C++코드에서는 AnimInstance라는 클래스로 이를 관리할 수 있다. 연결 스켈레탈 메시 컴포넌트는 자신이..

UE4 2022.09.30
[UE4] An Unreal process has crashed

해결과정 디버깅을 돌려보니 BindAxis함수에서 nullptr 오류가 잡힌다. this가 nullptr이라면 이 함수를 호출한 포인터 연산이 잘못되었다는건데.. 그래서 코드를 유심히 들여다보았다. void AMyPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); PlayerInputComponent->BindAxis(TEXT("UpDown"), this, &AMyPawn::UpDown); PlayerInputComponent->BindAxis(TEXT("LeftRight"), this, &AMyPawn::LeftRight); ..

UE4 2022.09.30
[UE4] InputComponent

프로젝트 세팅의 입력설정에서 언리얼 엔진이 제공하는 가상 입력 설정을 사용할 수 있다. 이를 사용하면 다양한 기기와 멀티 플랫폼에 효과적으로 대응할 수 있다. 설정이 완료되면 폰의 게임 로직에서 이를 사용하도록 코드를 작성한다. 언리얼 엔진은 입력 설정을 처리하기 위해 InputComponent라는 언리얼 오브젝트를 제공한다. 입력 설정과 폰 연결(Binding)시키기 폰의 SetupInputComponent()함수에서 연결할 수 있다. InputComponent는 BindAxis와 BindAction이라는 두 가지 함수를 제공한다. 폰이 이를 이용해 신호를 받으려면 입력 설정의 이름과 이와 연동할 언리얼 오브젝트 인스턴스의 함수 포인터를 지정한다. PlayerInputComponent->BindAxis..

UE4 2022.09.30
[UE4] 버전업 이후 달라진 것들

1. 4.22 버전부터 Possess함수 대신 OnPossess함수를 상속받도록 구조가 변경됐다. 2. 4.27 버전에선 CapsuleComponent가 SceneComponent와 호환되지 않는다 와같은 오류가 발생할 수 있는데, #include "Components/CapsuleComponent.h" 헤더파일을 추가해주면 간단히 해결된다. 3. 버전업 이후 수많은 헤더파일들이 세분화되어서 2번과 같은 오류나, 불완전한 클래스형식 "%$#%@%"에 대한 포인터 연산을 허용할 수 없다 와 같은 오류가 자주 발생한다. 이럴 땐 간단히 해당 클래스나 함수명, 변수명을 구글링한 후 언리얼 Documents에서 알려주는 헤더파일을 추가해주면 된다.

UE4 2022.09.26
[UE4] PlayerController

GameMode에 PlayerController 배정 게임모드는 플레이어가 입장할 때 플레이어 컨트롤러라는 특별한 액터도 함께 배정한다. 폰을 조종하는 역할을 맡는다. 게임모드의 생성자에서 플레이어컨트롤러의 클래스 정보를 넘겨주면 된다. PlayerController 가 배치되어 있는 폰에 빙의하는 법 폰의 Auto Possess Player 속성을 사용하면 레벨에 이미 배치돼 있는 폰에 플레이어 컨트롤러가 빙의할 수 있다. 원하는 폰을 레벨에 배치한 다음 디테일 윈도우 하단에 위치한 Auto Possess Player 항목을 Player 0으로 설정한다. Player 0은 로컬 플레이어를 의미한다.

UE4 2022.09.26
[UE4] 언리얼 코딩 표준

https://docs.unrealengine.com/4.27/ko/ProductionPipelines/DevelopmentSetup/CodingStandard/ 언리얼 엔진4 코드베이스에 에픽게임즈가 사용하는 표준과 규칙들. 코딩 표준 언리얼 엔진 4 코드베이스에 에픽게임즈가 사용하는 표준과 규칙입니다. docs.unrealengine.com 자세한 내용은 위의 docs를 참고하자. 1. 클래스 체계 클래스 체계는 작성자보단 읽는 사람을 기준으로 체계를 잡아야 한다. 읽는 사람 대부분은 클래스의 공용 인터페이스를 쓸 것이기에, public을 먼저 선언하고, private을 나중에 구현한다. 2. 작명규칙 - 변수이름, 유형 이름 등의 이름 내 각 단어의 첫 글자는 “대문자”로 써야 하며, 단어 사이에 ..

UE4 2022.09.26
[UE4] GameMode

게임이 시작되기까지 플로우 1. 게임 앱의 초기화 : UGameInstance::Init() 2. 레벨에 속한 액터의 초기화 : AActor::PostInitializeComponents() 3. 플레이어의 로그인 : AGameMode::PostLogin 4. 게임 시작 : AGameMode::StartPlay(), AActor::BeginPlay() 1. GameModeBase 클래스를 상속받는 액터 생성. 클래스 생성 후 제작한 게임모드를 현재 레벨에만 적용하려면 월드세팅 윈도우에서 Game Mode 섹션에 있는 GameMode Override항목을 누른 후 제작한 게임모드를 선택하면 된다. 2. 게임모드에 폰을 지정하기. 게임모드 클래스의 소스파일에 지정할 폰의 헤더파일을 추가해주고, 다음과 같이 ..

UE4 2022.09.26