본문 바로가기
반응형

Unreal176

Unreal IGameplayTaskOwnerInterface Link Error [Unreal/C++] IGameplayTaskOwnerInterface Link Error 언리얼 엔진 5에서 AI Controller와 UBTService 등에서 IGameplayTaskOwnerInterface인터페이스를 상속 받아 사용할 때 나타나는 문제점이다. 이는 모듈 추가가 되지 않아서 파일을 찾지 못하는 문제가 있다.CompilerResultsLog: Error: BTS_Corpse.cpp.obj : error LNK2001: "public: virtual void __cdecl IGameplayTaskOwnerInterface::OnGameplayTaskActivated(class UGameplayTask)" OnGameplayTaskActivated@IGameplayTaskOwnerIn.. 2023. 12. 20.
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 UseBlackboard TObjectPtr 문제 [Unreal/C++] UseBlackboard TObjectPtr 문제 Unreal Engine5에서 나타나는 문제점이다.먼저 UE4 에서는 Blackboard Component가 UBlackboardComponent* 자료형으로 선언되어 있다.하지만 UE5에서는 TObjectPtr로 선언되어 있는데,UseBlackboard 함수를 사용할 때에는 UBlackboardComponent*& 형식으로 받기 때문에 전달할 수 없는 문제가 생긴다.AAIController::UseBlackboard(UBlackboardData* BlackboardAsset, UBlackboardComponent*& BlackboardComponent) UE4 강의 자료로 학습하고 UE5로 공부하고 있는 사람들이 많이 겪는 문제이.. 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++ 생성자 사용시 주의할 점 [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.
반응형