⭐ Unreal Engine
[UE] BindWidget, BindWidgetOptional, BindWidgetAnim
[UE] BindWidget, BindWidgetOptional, BindWidgetAnim
2023.12.04UMG와 C++(UserWidget) 연동 시 사용하는 UPROERTY 키워드로는 BindWidget, BindWidgetOptional, BindWidgetAnim이 있다. 아래는 키워드 각각의 특징과 사용법을 정리하였다. UMG와 코드에서 선언한 변수를 연동할 때 상황에 맞는 키워드를 사용하자. 목차 UMG와 C++(UserWidget) 연동 시 사용하는 UPROERTY 키워드 UPROPERTY( meta = (BindWidget, BindWidgetOption, BindWidgetAnim) BindWidget 이 메타데이터 태그는 주로 UMG(언리얼 모션 그래픽) 위젯 클래스에서 사용한다. 이 태그를 사용하면, 위젯 디자이너에서 생성된 위젯 요소를 해당 변수에 바인딩할 수 있다. 이를 통해 코드에서..
[UE] Slate UI 2: 제거 마법사 - 에셋 리스트 띄우기
[UE] Slate UI 2: 제거 마법사 - 에셋 리스트 띄우기
2023.12.01Content Menu Extender에 제거 마법사를 만들어 선택한 폴더에 들어있는 에셋들을 한 눈에 볼 수 있도록 만들것이다. 이번시간에는 Slate UI 내에 에셋리스트를 띄울 것이다. 다음 시간에는 띄운 에셋 리스트를 삭제할 수 있는 기능을 추가할 것이다. 목차 Widget을 생성하여 탭에 텍스트 띄우기 AdvanceDeletionWidget 생성 AdvanceDeletionWidget.h 더보기 #pragma once #include "Widgets/SCompoundWidget.h" /** Slate Widget을 위해 빈 클래스가 필요 * */ class SAdvanceDeletionTab : public SCompoundWidget { SLATE_BEGIN_ARGS(SAdvanceDeleti..
[UE] Slate UI 1: Tab 띄우기
[UE] Slate UI 1: Tab 띄우기
2023.12.01Slate UI를 사용하여 탭을 생성하고 폴더 내에 있는 에셋 목록을 한번에 보여주게 만들 것이다. 에셋 목록을 조작하여 필요시 선택한 에셋들을 지우는 기능을 추가할 것이다. 일단, 탭을 생성하고 띄워주는 것부터 하겠다. 목차 Smart Pointer Smart Pointer 스마트 포인터 객체를 소유 삭제 예방 Unique Property TSharedPtr O O Reference Counting 메서드 사용 NULL을 가리킬 수 있음 TSharedRef O O NULL을 가리킬 수 없음 무조건유효한 객체를 가르켜야 함 TWeakPtr X X Reference cycle을 부순다 TSharedRef타입의 함수는 return 값이 무조건 NULL이 아닌 유효한 값이다. 이 점을 알고 있으면 코드 파악이..
[UE] ContentBrowser Menu: 사용하지 않는 에셋/빈 폴더 제거
[UE] ContentBrowser Menu: 사용하지 않는 에셋/빈 폴더 제거
2023.11.25Content Browser Menu에 사용하지 않는 에셋과 폴더를 제거하는 기능을 추가하였다. 폴더를 우클릭하여 해당 기능을 눌러 실행한다. 해당 에셋이 사용하고 있는지 체크하고 사용하지 않을 경우에만 삭제를 진행한다. 폴더 역시 빈 폴더인지 체크 후에 빈 폴더이면 삭제한다. 목차 사용하지 않는 에셋 제거 Delegate 선언 정리 DECLARE_DELEGATE( DelegateName ) void Function() ex. DECLARE_DELEGATE( OnDelegateButtonClicked ) DECLARE_DELEGATE_OneParam( DelegateName, Param1 Type ) void Function( Param1 ) ex. DECLARE_DELEGATE_OneParam( OnD..
[UE] Asset Editor Tool 3: 사용하지 않는 Asset만 제거하기
[UE] Asset Editor Tool 3: 사용하지 않는 Asset만 제거하기
2023.11.25선택한 에셋들 중 사용하지 않는 에셋만 삭제하는 기능을 추가하였다. 이 기능으로 에셋을 삭제하면 의도치않게 에셋을 삭제하는 불상사를 방지할 수 있다. 목차 1. 사용되지 않는 Asset만 제거하기 .Build.cs 에 "UMG", "Niagara" 추가하기 SWManager.Build.cs 더보기 using UnrealBuildTool; public class SWManager : ModuleRules { public SWManager(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; PrivateIncludePaths.AddRange( new string[] { S..
[UE] Asset Editor Tool 2: Asset 접두어 넣기
[UE] Asset Editor Tool 2: Asset 접두어 넣기
2023.11.25언리얼에서 작업을 할때 Asset을 보기좋게 찾기 위해 접두어를 넣는 경우는 흔하다. Material의 경우 M_, Blueprint는 BP_와 같은식이다. 매번 이 과정을 하는것은 귀찮은 일이기 때문에 자동으로 접두어를 붙여주는 기능을 만들었다. 목차 1. Asset 접두어 넣기 언리얼 공식문서에서 제시한 추천 접두어 모듬 https://docs.unrealengine.com/4.27/en-US/ProductionPipelines/AssetNaming/ Recommended Asset Naming Conventions A recommended naming convention to help organize your Assets. docs.unrealengine.com .Build.cs 에 "UMG", "..
[UE] Asset Editor Tool 1: Asset 복제 기능의 Editor 만들기
[UE] Asset Editor Tool 1: Asset 복제 기능의 Editor 만들기
2023.11.23언리얼 에디터 내에서 Asset을 원하는 숫자만큼 한 번에 복제하는 툴 기능을 구현하였다. 만약 0이하의 숫자를 기입하는 경우, 경고 문구를 띄우고 복제가 진행되지 않는다. 해당 기능을 사용해서 좀 더 편리하게 언리얼 작업을 진행해보자. 목차 Asset 복제 기능의 Editor 만들기 Plugin 생성 후 .uplugin 설정 변경하기 SWManager.uplugin Game에는 영향을 안 주고 Editor에서만 영향을 주므로 Runtime이 아닌 Editor로 설정. Plugin Module이 로드되는 시점 PreDefault로 변경 QuickAssetAction 생성 QuickAssetAction.h 더보기 #pragma once #include "CoreMinimal.h" #include "Asse..
[UE] 빌드 환경설정(Build Mode): Debug, DebugGame, Development, Shipping
[UE] 빌드 환경설정(Build Mode): Debug, DebugGame, Development, Shipping
2023.11.15UnrealBuildTool은 *.build.cs 및 *.target.cs 파일을 사용하여 게임 프로젝트를 빌드한다. 목차 빌드 환경설정 UnrealBuildTool(UBT)은 *.build.cs 및 *.target.cs 파일을 사용하여 게임 프로젝트를 빌드한다. 빌드 환경 - 상태 상태 Debug - 엔진과 게임 코드 모두 빌드 - 속도 느림 - 디버깅에 좋음 DebugGame - 최적화 없이 게임 코드만 빌드 - 게임 모듈만 디버깅하는 경우 좋음 Development - 최적화 없이 엔진과 게임 코드 모두 빌드 - 컴파일시 코드변경사항이 Editor에 반영됨 Test - Shipping과 동일하지만 - console commands, stats, profiling tools 유지 Shipping - ..
[UE] Visual Stduio 호환되지 않음, 로드 실패
[UE] Visual Stduio 호환되지 않음, 로드 실패
2023.11.13솔루션(solution) 파일을 열었을 때 '호환되지 않음' 또는 '로드 실패'라고 띄면서 소스 파일들이 전부 로드되지 않는 문제가 발생할 수 있다. 이런 경우 대개 파일의 경로를 찾지 못해 발생하는 문제다. 먼저 프로젝트 파일을 우클릭하여 경로를 다시 로드해서 잡아준다. 하지만 이 방법으로 해결되지 않는 경우, 아래와 같은 방법들을 시도해봐야 한다. 목차 Visual Stduio 호환되지 않음, 로드 실패 문제 상황 솔루션(solution) 파일을 열었을 때 '호환되지 않음' 또는 '로드 실패'라고 띄면서 소스 파일들이 전부 로드되지 않는 문제가 발생할 수 있다. 이런 경우 대개 파일의 경로를 찾지 못해 발생하는 문제다. 먼저 프로젝트 파일을 우클릭하여 경로를 다시 로드해서 잡아준다. 하지만 이 방법으..
[UE5] 언리얼 엔진5.3 빌드하기 (UE build from source code)
[UE5] 언리얼 엔진5.3 빌드하기 (UE build from source code)
2023.11.09현업에서는 엔진을 순정 상태로 사용하지 않는다. 엔진을 프로젝트에 맞게 변형해야 하기 때문에, 엔진 소스코드를 받아 수정해서 사용한다. 게임 회사에서 엔진을 다운받아 빌드를 하여 사용한다. 언리얼 Github 페이지에 들어가 엔진 소스 코드를 다운받아 빌드를 해보았다. Unreal Engine 5.3.2 버전 + Visual Studio 2022를 사용하였다. 목차 언리얼 엔진 빌드하기 현업에서는 엔진을 순정 상태로 사용하지 않는다. 엔진을 프로젝트에 맞게 변형해야 하기 때문에, 엔진 소스코드를 받아 수정해서 사용한다. 게임 회사에서 엔진을 다운받아 빌드를 하여 사용한다. 언리얼 Github 페이지에 들어가 엔진 소스 코드를 다운받아 빌드를 해보았다. Unreal Engine 5.3.2 버전 + Visu..
[Unreal] 리플리케이션 (Replication), Remote Procedure Call (RPC)
[Unreal] 리플리케이션 (Replication), Remote Procedure Call (RPC)
2023.11.08언리얼 C++에서 서버와 클라이언트 각각에서 실행되는지 여부를 잘 체크해야 한다. PROPERTY Replication과 RPC의 사용방법에는 차이가 있다. 두 방법의 차이점을 파악하고 상황에 맞게 활용하자. 목차 리플리케이션 (Replication) 액터 리플리케이션 (Actor Replication) 리플리케이션은 액터(Actor)를 기준으로 실행된다. Server는 액터 목록을 유지하고, Client에서 (리플리케이트되도록 마킹된) 각 액터에 대한 근접 추정치를 유지할 수 있도록 클라이언트를 주기적으로 업데이트한다. 액터 업데이트 방식: 프로퍼티 업데이트, RPC 액터의 업데이트 방식: 변수 리플리케이션 (PROPERTY Update)RPC (Remote Procedure Call) 프로..
[UE] Player 뒤쪽에 있는 적에게 Trace Hit 처리되어 총알이 뒤로 날아가는 (+Crosshair 빨간색으로 활성화) 문제 해결
[UE] Player 뒤쪽에 있는 적에게 Trace Hit 처리되어 총알이 뒤로 날아가는 (+Crosshair 빨간색으로 활성화) 문제 해결
2023.10.03현재 카메라에서 화면 중앙에 위치한 Crosshair 방향으로 Trace를 쏘아 Hit 처리를 하여 결과값을 바탕으로 Crosshair가 흰색에서 빨간색으로 변한다. 하지만 Camera와 Player 사이에 적이 위치한 경우도 Hit 처리가 되어 총알이 Muzzle 위치에서 뒤로 나가는 문제가 발생한다. Crosshair도 흰색에서 빨간색으로 활성화된다. 목차 Player 뒤쪽에 있는 적에게 Trace Hit 처리되어 총알이 뒤로 날아가는 (+Crosshair 빨간색으로 활성화) 문제 해결 문제상황 현재 카메라에서 화면 중앙에 위치한 Crosshair 방향으로 Trace를 쏘아 Hit 처리를 하여 결과값을 바탕으로 Crosshair가 흰색에서 빨간색으로 변한다. 하지만 Camera와 Player 사이에 ..