관리 메뉴

가끔 보자, 하늘.

Unreal Engine 5.x 개발툴 팁! 본문

개발 이야기/개발툴 및 기타 이야기

Unreal Engine 5.x 개발툴 팁!

가온아 2024. 1. 17. 09:39

Log 출력 (상세 내용은 이 링크로..)

UE_LOG(LogTemp, Display, TEXT("Distance: %f"), movingDist);

 

툴 UI 글씨 크기 조정. 4k 모니터에서 글씨가 너무 작으면 보기 힘들다.

Widget reflector에서 Application Scale을 1.5로 저정하면 툴의 UI 크기를 좀 더 크게 볼 수 있다.

 

Live Coding 중 작업한 내용이 툴을 재시작했을 때 안보인다면... 다시 리빌드 하면 보인다. 

하지만 마지막 설정한 값이 사라진 경우가 있다. 이때는 저장하지 말고 툴을 종료 후 VS에서 프로젝트를 빌드하여 마지막 설정했던 값이 잘 설정되어 있는지 확인 후 빌드, 그리고 다시 툴을 열어서 확인한다. 만약 같은 문제가 반복되거나 라이브 코딩 시 다른 문제가 있다면 editor preferences ->General/Live Coding 에서  Enable Live Coding 옵션을 비활성화 후 옵션들을 저장 후 툴을 재시작하면 될 때가 있습니다. ... 이게 최선인가 -_-a

 

움직이는 객체와 가만히 서있는 캐릭터의 충돌 시 발생하는 글리치 현상 해결 방법

캐릭터 코드는 움직이지 않는 한 콜리전을 확인하지 않기 때문이라는데... 이게 맞나??  게다가 이를 해결하기 위해 매 틱마다 캐릭터를 조금 움직였다가 제자리 돌려놓는다니.. ;;;

길이 측정 방법 - 마우스 휠을 누른채  이동하면 아래와 같이 길이를 쉽게 측정할 수 있다.

Trace/ Collision Channel을 추가 후 사용 방법

GrabberChannel 이라는 이름의 Trace channel을 추가했다면 코드에서 사용할 이름은 DefaultEngine.ini에서 확인할 수 있습니다. (새로운 채널을 추가했다면 Tool을 재시작해야 합니다.) Project의 Config/DefaultEngine.ini 파일을 열어보면 아래와 같은 텍스트를 확인할 수 있습니다.

+DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Block,bTraceType=False,bStaticObject=False,Name="Projectile")
+DefaultChannelResponses=(Channel=ECC_GameTraceChannel2,DefaultResponse=ECR_Ignore,bTraceType=True,bStaticObject=False,Name="GrabberChannel")

ECC_GameTraceChannel2 라는 이름으로 할당되었군요. 아래와 같이 사용할 수 있습니다 

WorldPtr->SweepSingleByChannel(HitResult, Start, End, FQuat::Identity, ECC_GameTraceChannel2, Params);

 

Enhanced Input의 입력값을 Swizzling 하는 이유

  • 다양한 입력 장치(예: 키보드, 마우스, 게임패드 등)의 입력을 동일한 형식으로 표준화
  • 입력 데이터의 특정 부분을 추출하거나 조작할 수 있으므로 게임 개발자들은 보다 정교한 입력 처리를 구현

 

Enhanced Input 을 C++ 프로젝트에 연동하기

링크를 확인하세요.

추가 모듈 설정

[프로젝트 이름].build.cs 라는 파일이 있는데 이 파일을 열어보면 아래와 유사한 코드를 볼 수 있습니다.

// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class MyProject : ModuleRules
{
	public MyProject(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput" });
	}
}

어떤 모듈을 추가해야 한다면 PublicDependencyModuleNames에 이름을 추가하면 됩니다. 이후 프로젝트를 종료 후 Binaries, Intermediate 폴더를 삭제, 재시작 하면 정상적으로 인식됩니다.

커스텀 모듈을 만들고 싶을 때는 이 링크를 참고하세요.

C++ 코드로 생성된 함수, 변수 접근이 안될 때

UE5툴 종료 후 VS 에서 Ctrl+Shift + B 로 빌드 시도 -> [프로젝트명] Win64 Development Build 선택해 빌드.

UE5툴 재시작 후 Live Coding Rebuild 하면 정상적으로 보입니다. 역시.. 안보일 때는 Binaries, Intermediate 폴더를 삭제, 재시작 하면 정상적으로 인식됩니다.

static mesh에 collision 설정 중 overlap 이벤트 처리가 정상적으로 되려면 Collision Presets -> Collision Enabled를 "Collision Enabled(Query and Physics)"로 설정되어 있어야 합니다.

UPROPERTY() 활용

맴버에 어떤 객체의 포인터를 저장한다면 UPROPERTY() 를 꼭 붙여두세요. 가비지 컬렉션이 적용되어 치명적인 문제를 예방할 수 있습니다.

Cpp 프로젝트에서 코드 에러로 실행 안될 때

코드가 에러가 있다면 프로젝트를 정상적으로 열 수 없습니다. 이때는 VSCode 등 코드편집 툴을 열어 코드를 수정해서 빌드가 정상적으로 되는지 확인 후 다시 언리얼엔진에서 프로젝트를 열어 보세요.

 

반응형