본문 바로가기
반응형

Unreal/Manual132

Unreal ApplyDamage, TakeDamage 데미지 전달 [Unreal/C++] ApplyDamage, TakeDamage 데미지 전달 Unreal Engine 5 언리얼 엔진에서 데미지를 주고 받는 기본적인 형식입니다. UGameplayStatics::ApplyDamage()AActor::TakeDamage() ApplyDamage를 사용하기 위해서 헤더파일을 필요로합니다.#include "Kismet/GameplayStatics.h"데미지를 가할 경우 보통 BeginOverlap 등 충돌과 연관되는 것이 많기에 BeginOverlap 안에 정의했습니다.void MyActor::OnBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* Othe.. 2023. 12. 27.
Unreal WidgetComponent ProgressBar 추가, 적 체력 UI [Unreal/C++] WidgetComponent ProgressBar 추가, 적 체력 UI 언리얼 엔진에서 Actor 위에 UI를 띄우고 싶은 경우 사용할 수 있는 컴포넌트입니다.아래 이미지와 같이 UI를 띄우려면 위젯 블루프린트를 생성하여 위젯 컴포넌트에 연결해야합니다.WidgetComponent를 추가하여 사용할 수 있습니다.위치를 조정하고 Space 모드를 Screen으로 설정해야 합니다.World는 3D UI를 보여줄 때 용이하고 Screen모드는 카메라를 정면으로 바라봐야할 때 유용합니다.위젯 클래스를 생성한 위젯 블루프린트로 설정해줄 수 있습니다.위젯 블루프린트를 생성하고 사이즈 박스와 ProgressBar를 차례로 생성합니다.SizeBox는 Width 와 Height를 Override하여.. 2023. 12. 27.
Unreal AnimMontage Slot 추가하기 [Unreal] AnimMontage Slot 추가하기 언리얼 엔진 5 애니메이션 슬롯 DefaultGroup.SlotName 추가 방법 애니메이션 스켈레톤에 저장된 애니메이션 슬롯 이름이 많은 애니메이션들이 있습니다. 하지만 에셋들 중 슬롯 이름이 없는 경우가 있는데, 이 슬롯은 추가가 가능합니다. 애니메이션 몽타주 화면에서 Window->Anim Slot Manager 슬롯 추가가 가능합니다.      Animation SlotsInsert entry-points within your Anim Graph to play animation from using Slots.docs.unrealengine.com 2023. 12. 21.
Unreal GenericTeamID 설정하기 [Unreal/C++] GenericTeamID 설정하기 Unreal에서 AI를 구현하거나 아군, 적군, 중립을 설정하기 위해 TeamID라는 것이 필요하다.AIController를 상속받는 클래스라면 크게 신경쓰지 않아도 되지만 상속받지 않는 클래스는 인터페이스를 상속받고 구현해야한다.  #include "GenericTeamAgentInterface.h" 헤더를 추가하고IGenericTeamAgentInterface 인터페이스를 상속받는다.일반 클래스는 다중 상속이 불가능하지만 인터페이스는 다중상속이 가능하다.  #include "CoreMinimal.h"#include "GameFramework/Character.h"#include "GenericTeamAgentInterface.h" // ge.. 2023. 12. 18.
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++ 버튼을 눌러 게임 종료 (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++ 위젯(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.
반응형