본문 바로가기
반응형

분류 전체보기424

Unreal C++ SpawnActor 무기 장착하기 [Unreal/C++] SpawnActor 무기 장착하기 언리얼 엔진 C++ 코드를 이용하여오른손에 무기를 장착한다. 스켈레톤에서 소켓 추가소켓에서 프리뷰 에셋을 추가하여 미리보기프리뷰 에셋을 추가하여 원하는 위치와 회전을 맞춰줍니다. Actor로 생성해야 하니 Actor를 상속받는 무기 클래스를 만들어 줍니다.Sword 클래스 코드는 다음과 같습니다. // Sowrd.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Enemy_Sword.generated.h"UCLASS()class MAINPROJECT_API AEnemy_Sword : public AActor{ GENERATED_BODY() public: A.. 2023. 12. 17.
Unreal C++ 코드 디버깅, 콜 스택(Call Stack) 로그 출력 [Unreal/C++] 코드 디버깅, 콜 스택(Call Stack) 로그 출력 언리얼 프로그래밍을 하다 보면 함수가 어디서 호출되는지 확인하고 싶을 때가 있다.언리얼에서는 이 콜스택을 지원한다. FDebug 클래스의 DumpStackTraceToLog() 함수이다.FDebug::DumpStackTraceToLog()  FDebug 클래스는 디버깅 및 진단 기능을 제공한다.그 중 DumpStackTraceToLog 함수를 사용한다.5.0 기준으로 함수는 다음과 같다./** Dumps the stack trace into the log, meant to be used for debugging purposes. */static void DumpStackTraceToLog(const ELogVerbosity::.. 2023. 12. 16.
Unreal C++ 생성자 사용시 주의할 점 [Unreal/C++] 생성자 사용시 주의할 점 UObject 에는 4개의 생성자가 있습니다. 아무 것도 받지 않는 기본 생성자FObjectInitializer&를 받는 생성자EStaticConstructor, EObjectFlags 를 받는 생성자FVTableHelper&를 받는 생성자 UObject를 상속받는 Actor - Pawn - Character 등도 생성자를 만들게 되면 부모의 생성자를 확인하고 호출해 줘야 합니다.// UObject.h 생성자 일부/** Default constructor */UObject();/** * Constructor that takes an ObjectInitializer. * Typically not needed, but can be useful for c.. 2023. 12. 16.
Unreal C++ 버튼을 눌러 게임 종료 (QuitGame) [Unreal/C++] 버튼을 눌러 게임 종료 (QuitGame) 언리얼 엔진에서 게임 종료를 위해서 Kismet 라이브러리의 UKismetSystemLibrary::QuitGame 함수를 사용한다.월드와 플레이어 컨트롤러 종료 옵션 플랫폼 옵션이 필요하다.ReferencesModuleEngineHeader/Engine/Source/Runtime/Engine/Classes/Kismet/KismetSystemLibrary.hInclude#include "Kismet/KismetSystemLibrary.h"Source/Engine/Source/Runtime/Engine/Private/KismetSystemLibrary.cppSyntaxstatic void QuitGame( const UObject * .. 2023. 12. 16.
Unreal C++ 리슨 서버 오픈 레벨 Play as Listen Server Open Level [Unreal/C++] 리슨 서버 오픈 레벨 Play as Listen Server Open Level 언리얼 엔진 에서 리슨 서버를 열기 위해 OpenLevel을 사용할 수 있습니다. OpenLevel은 UGameplayStatics 클래스가 가지고 있으며 #include "Kismet/GameplayStatics.h" 헤더를 추가해 사용할 수 있습니다.OpenLevel의 구문은 월드, 레벨 이름, 절대이동, 옵션을 사용합니다.static void OpenLevel( const UObject * WorldContextObject, FName LevelName, bool bAbsolute, FString Options)레벨 이름의 경우 검색 속도를 위해 전체 경로를 포함해주는 것이 .. 2023. 12. 13.
Unreal C++ 블루프린트 부모 클래스 변경 [Unreal/C++] 블루프린트 부모 클래스 변경 Unreal Engine 5 에서 클래스 작업을 하던 도중 이름이 마음에 들지 않아 클래스 파일의 이름을 바꿨습니다.해당 클래스를 부모로 가지고 있던 위젯 블루프린트는 부모 클래스를 찾지 못해 다음과 같은 에러를 발생시켰습니다.위젯 블루프린트가 유효하지 않은 클래스에서 파생되어 로드할 수 없습니다.이 블루프린트의 부모 클래스가 제거되지는 않았는지 확인해보세요!  먼저 이에 대한 해결책은 언리얼 포럼에서 찾을 수 있었습니다. How to change parent class of blueprint asset?Hey guys, If someone needs to change the Parent of Blueprint without opening the Blu.. 2023. 12. 12.
Unreal C++ 위젯(UserWidget)의 Native 함수 초기화와 생성 [Unreal/C++] 위젯(UserWidget)의 Native 함수 초기화와 생성 언리얼 엔진에서 UserWidget을 상속받아 클래스를 생성하고자 한다면 생성과 삭제 시점에 처리해야할 작업들이 있을 것 입니다. 변수의 값들을 초기화하거나 이벤트나 델리게이트를 연결하고 삭제 시점에 남아 있으면 안되는 것들을 삭제해 주는 작업이 필수적으로 요구됩니다. 이러한 작업들을 한 시점에 몰아서 작업하게 되는데 Unreal에서는 생성, 파괴되기 전에 처리해야 하는 작업들을 위한 함수를 지원하고 있습니다. 위젯(UserWidget)에서는 C++ 작업자들을 위한 Native 함수들이 주인공입니다.수십개의 Native 함수 중 우리가 눈여겨봐야 할 것은 UserWidget.h 파일의 1270번 줄 정도에 선언되어 있는 .. 2023. 12. 11.
Unreal C++ 위젯(UserWidget) 버튼 클릭 이벤트 (Button OnClick Event) [Unreal/C++] 위젯(UserWidget) 버튼 클릭 이벤트 (Button OnClick Event) 이 글에서는 언리얼 엔진 5에서 위젯 블루프린트안에 있는 버튼의 OnClicked 이벤트를 C++ 코드와 연결하는 방법을 설명합니다. 이 위젯에서는 Online버튼 등 5개의 버튼이 적절하게 배치되어 있습니다.이벤트의 연결 방법과는 무관하며 사용자 임의의 버튼 하나만 생성되어 있으면 충분합니다. 위젯을 생성하기에 앞서 UUserWidget을 상속받는 클래스를 만들어줍니다.클래스의 이름은 기호에 따라 작성합니다. 클래스 생성시 기본 틀이 생성됩니다. #pragma once#include "CoreMinimal.h"#include "Blueprint/UserWidget.h"#include "W_Lob.. 2023. 12. 11.
Unreal 액터(Actor)의 생명 주기(Life Cycle) [Unreal] 액터(Actor)의 생명 주기(Life Cycle)  Actor LifecycleWhat actually happens when an Actor is loaded or spawned, and eventually dies.docs.unrealengine.com 이 문서는 다음을 포함하는 Actor 의 수명 주기에 대한 높은 수준의 개요입니다 .액터 초기화 방법을 포함하여 액터가 레벨에 인스턴스화되거나 스폰되는 방법입니다.액터가 PendingKill로 표시된 후 가비지 컬렉션을 통해 제거되거나 파괴되는 방식입니다.아래 흐름도는 액터 인스턴스화 방법에 대한 주요 경로를 보여줍니다. 액터가 어떻게 생성되든, 모두 소멸될 때까지 같은 경로를 따릅니다.  디스크에서 로드Load From Disk 경.. 2023. 12. 10.
Unreal 게임 실행 프로세스 [Unreal] 게임 실행 프로세스 언리얼 엔진에서 게임은 BeginPlay가 호출되기 전까지 에디터와 독립형 모드 사이에 차이점이 있습니다.아래 이미지를 확인했을 때 일부 호출되는 함수와 순서가 다른 것을 볼 수 있습니다.  엔진 시작 및 게임 실행 프로세스에 대한 설명 문서입니다. 여기서 보여드리는 방법은 크게 두 가지, 에디터 방법과 독립형 방법입니다. 일반적인 이벤트 순서는, 엔진을 초기화시키고, GameInstance 를 생성 및 초기화한 뒤, 레벨을 로드하고, 마지막으로 플레이를 시작합니다. 하지만 독립형 모드와 에디터 모드 사이의 차이점이 있는데, 일부 함수가 호출되는 정확한 순서와, 어떤 함수가 호출되는지가 다릅니다. 아래 플로우 차트는 두 방법으로 병렬 실행했을 때 게임 시작 전 수렴할 .. 2023. 12. 10.
Unreal Widget 정렬, 칸 맞추기 [Unreal] Widget 정렬, 칸 맞추기 언리얼 엔진에서 위젯을 설정할 때 칸이 맞지 않고 가운데 정렬 등을 하고 싶을 때 억지로 맞추는 일이 있습니다.비율에 맞게 가운데 정렬이나 종횡비를 유지하면서 위젯을 배치하고 싶은 경우 스케일 박스를 활용할 수 있습니다. 스케일 박스는 원하는 크기의 콘텐츠를 배치하고 이 박스의 할당 영역에 배치된 제한에 맞도록 스케일을 조절합니다. 배경 이미지가 일정 영역에 맞게끔 스케일 조절은 하지만 종횡비가 달라져 찌그러지지는 않도록 하거나, 특정 텍스트를 한 영역에 자동으로 맞도록 할 필요가 있는 경우에 좋습니다. 스케일 박스는 가로 박스(Horizontal Box)와 세로 박스 (Vertical Box)를 함께 사용했을 때 빛을 발합니다. 빈 공간을 채워 허전하지 않.. 2023. 12. 10.
Unreal C++ BoxComponent BoxSize 변경 [Unreal/C++] BoxComponent BoxSize 변경  Unreal UBoxComponent CollisionShape BoxExtend 변경 UBoxComponentA box generally used for simple collision. Bounds are rendered as lines in the editor.docs.unrealengine.com  SetBoxExtent 사용 2023. 12. 8.
반응형