반응형 Unreal179 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. Unreal Layered Blend per bone 본 별 레이어 블렌딩 이상함 [Unreal] Layered Blend per bone 본 별 레이어 블렌딩 이상함 본별로 레이어 블렌딩 시 애니메이션에 따라 바라보는 방향이나 회전 등이 이상하게 잡힐때가 있습니다. 여러가지 이유가 있을 수 있지만 대략적인 원인은 다음과 같습니다.1. 레이어 설정의 타겟 본 설정이 잘못된 경우2. 뎁스나 가중치 값이 잘못 설정된 경우3. 메시 스페이스 회전이 필요하지만 설정하지 않은 경우 Paragon Animation의 경우 메시 스페이스 회전 체크를 해주지 않아 발생했습니다. 본 별로 레이어 블렌딩 노드에서 디테일 창의 내용을 확인합니다.본 이름은 설정이 잘 되어 있는지 확인하고 메시 스페이스 회전 체크 유무에 따라 어떤 변화가 있는지 확인합니다. 본 별로 레이어를 구분할 때 보통 하체를 베이.. 2023. 12. 4. Unreal Animation Montage에서 Particle이 재생되지 않음 [Unreal] Animation Montage에서 Particle이 재생되지 않음 Unreal Engine 5 Animation Montage, Animation Notification, Animation Notification State, Particle System 애니메이션 설정 문제반복 재생이 설정되어 있는 경우 Notify로 재생하는 것이 아닌 Notify state로 설정해야 한다.Animation Montage안에서 Animation Notify로 Particle을 재생하는 경우 1회성 플레이가 된다.Paritlce System에서 루핑 설정이 0(무한 반복)으로 설정되어 있는 경우 Notify에서는 바로 종료되기 때문에 재생이 되지 않는다.그러므로 Particle 설정에서 루핑 횟수를 지.. 2023. 12. 4. Unreal C++ Component BeginOverlap, EndOverlap 구현 [Unreal/C++] Component BeginOverlap, EndOverlap 구현 Component에는 OnComponentBeginOverlap과 OnComponentEndOverlap이 구현되어 있습니다.이는 UPrimitiveComponent를 상속받는 오브젝트에서 사용할 수 있으며, 구현 과정이 까다롭지 않습니다. 먼저 UPrimitiveComponent의 구현된 함수내용을 확인해보면FComponentBeginOverlapSignature OnComponentBeginOverlap;FComponentEndOverlapSignature OnComponentEndOverlap;가 구현되어 있습니다.// PrimitiveComponent.h /** * Event called when som.. 2023. 12. 2. Unreal 애니메이션 몽타주 파티클 추가 재생 [Unreal] 애니메이션 몽타주 파티클 추가 재생 Unreal Engine5 Animation Montage Anim Notify Play Particle준비1. 타겟 스켈레톤 2. 애니메이션 몽타주 3. 파티클 애니메이션 몽타주를 열고 일시정지를 눌러줍니다.이후 노티파이 트랙에 여분이 있는지 확인합니다.기본적으로 노티파이 트랙 이름은 1, 2, 3 처럼 인덱스로 생성되지만 이름을 클릭하면 이름 변경이 가능해집니다.트랙이 있을 경우 그대로 진행하고 없을 경우 트랙을 추가해 구분해줍니다.원하는 트랙에서 마우스 우클릭 ->노티파이 추가 -> 파티클 이펙트 재생을 눌러 추가해줍니다.생성된 파티클 이펙트 재생 노티파이를 클릭하여 우측 디테일 화면을 확인합니다.원하는 파티클을 지정해주고 위치를 조정해줍니다.위치.. 2023. 12. 1. Unreal C++ Mesh->SetMaterial 방법 [Unreal/C++] StaticMesh->SetMaterial 방법 먼저 SetMaterial의 방법은 어렵지 않다.디테일 창에서 Material Element를 확인하고 그 숫자에 맞는 인덱스와 함께 Material을 전달해주면된다.하지만 처음 Material을 설정하려 할 때 왜 안되지 ? 라는 생각이 먼저 들었다.생성자에서 UMaterial을 정상적으로 가져오고 StaticMesh도 있지만 SetMaterial을 진행하면 적용이 안되는 것이었다.다른 Component나 설정은 잘 먹히는데 경험해본 바로는 생성자에서 SetMaterial을 호출하면 작동하지 않는 것 이었다. 헤더 파일에 추가class UStaticMeshComponent* StaticMesh;class UMaterial* Mat.. 2023. 12. 1. Unreal C++ Error: CDO Constructor (Assets): Failed to find [Unreal/C++] Error: CDO Constructor (Assets): Failed to find Error: CDO Constructor (Assest or Class) : Failed to find 에러는 경로 및 Type이 잘못되었을 때 자주 발생한다. 생성자에서 FClassFinder 이나 FObjectFinder으로 Assets을 가져오려 시도할 때 컴파일 이후로 경로가 잘못된 것을 알 수 있다.예를 들어 FClassFinder로 블루프린트 클래스를 가져올 때 레퍼런스 경로가 잘못되어 있거나 뒤에 '_C' 를 붙여주지 않아 에러가 났을 확률이 있다.ConstructorHelpers::FClassFinder bullet(L"Blueprint'/Game/Characters/Bullets/.. 2023. 12. 1. 이전 1 ··· 5 6 7 8 9 10 11 ··· 15 다음 반응형