전체 글
-
[Unreal Engine] UFUNCTION UPARAM : Rename, Relocate paramsUnreal Engine 5._ 2023. 1. 31. 16:22
이전 글 (UFUNCTION Multiple return values)에서 반환 핀을 늘리는 방법을 알아보았습니다. 파라미터를 참조로 설정하면 되는 것 이었는데, 이 경우 아래와 같은 문제가 발생합니다. 입력이 참조여야 할 경우에는 어떻게 하는가? 이번 글에서는 위 의문에 대해 살펴보도록 하겠습니다. 참조를 입력으로 받는 방법은 두 가지가 있습니다. 첫 번째는, const에 대한 참조를 받는 것 입니다. UFUNCTION(BlueprintCallable) static int32 MyFunction( int32 A, const int32& B, int32 C, const int32& D ) 위 코드는 이전 글에 예시로 보여드린 함수의, 참조 부분을 const로 바꾼 것 입니다. 반환 핀으로 있던 B, D가..
-
[Unreal Engine] UFUNCTION override (C++)Unreal Engine 5._ 2023. 1. 31. 13:57
UFUNCTION은 중복해서 사용할 수 없습니다. 구체적으로, A::Function이 UFUNCTION이고, A를 상속받는 B::Function이 UFUNCTION일 경우 이를 컴파일 하면 다음과 같은 에러와 함께 컴파일이 되지 않습니다. Override of UFUNCTION in parent class cannot have a UFUNCTION() declaration above it; it will use the same parameters as the original declaration. 이와 관련하여, UFUNCTION함수를 오버라이드 하는 방법을 살펴보도록 하겠습니다. 서론의 에러 메시지는 직관적입니다. 메시지에 따르면 상속 구조에서 상위 클래스의 UFUNCTION은 하위 클래스에 사용할 수..
-
[Unreal Engine] UFUNCTION Multiple return valuesUnreal Engine 5._ 2023. 1. 26. 18:55
함수가 여러 개의 값을 반환해야 하는 경우가 존재합니다. 반환해야 하는 타입이 같다면 배열로 반환하면 되겠지만, 그렇지 않은 경우가 있습니다. 언리얼, 특히 블루프린트에서는 특정 기능의 성공 여부의 bool값을 같이 반환하는 경우가 있습니다. 이번 글에서는 C++의 함수를 UFUNCTION으로 블루프린트에서 사용할 때, 여러 값을 반환하는 경우를 알아보도록 하겠습니다. 다음 C++함수를 살펴보도록 하겠습니다. MyActor.h UFUNCTION(BlueprintCallable) static int32 MyFunction( int32 A, int32& B, int32 C, int32& D ) 위와 같은 함수를 정의, 구현했다고 가정할 경우, 블루프린트에서는 해당 함수를 아래와 같이 사용할 수 있습니다. 참..
-
[Unreal Engine] Forum : Blueprint access C++ static functionUnreal Engine 5._ 2023. 1. 26. 16:56
C++의 함수를 블루프린트에서 사용하려면, 다음과 같이 UFUNCTION매크로에 BlueprintCallable인자를 넣어주면 됩니다. UFUNCTION(BlueprintCallable) void Function(); 이 함수는 이제 블루프린트에서 호출할 수 있는 함수가 되어, 다음과 같이 사용할 수 있습니다. 하지만 이 경우 호출하려는 주체 (인스턴스)가 필요합니다. 다른 블루프린트 함수처럼 인스턴스 없이 작동하는 함수를 만드는 방법을 찾아보았고, 그 내용을 공유하려 합니다. Can I create a static function in C++ which I can access from any Blueprint? 당연하겠지만, 정답은 함수를 static으로 선언하는 것 이었습니다. MyActor.h UF..
-
[Unreal Engine] Delay : UKismetSystemLibrary::Delay, SetTimer()Unreal Engine 5._ 2023. 1. 24. 17:14
언리얼의 블루프린트에는 Delay 노드가 존재합니다. (구체적으로는 Delay와 Delay Until Next Tick 입니다.) 이 노드들은 선택한 시간, 혹은 다음 틱까지 이벤트의 실행을 중지시키는 역할을 합니다. 지정된 시간동안 실행을 지연시키는 역할을 하는 이 노드는, C++에서는 UKiUKismetSystemLibrary의 메소드로 존재합니다. 다만, 이를 코드로 확인해보면 블루프린트와는 다른 모습을 볼 수 있습니다. 이번 글에서는 C++에서 블루프린트의 Delay 기능을 사용하는 방법을 살펴보도록 하겠습니다. 1. 개요 & FLatentActionInfo 더보기 C++에 구현된 Delay 관련 함수는 다음과 같습니다. UKismetSystemLibrary::Delay UKismetSystemL..
-
[Unreal Engine] SetTimer() : C++ & BlueprintUnreal Engine 5._ 2023. 1. 19. 15:06
게임을 만들다보면, 시간에 관계되는 이벤트를 만들어야 되는 상황이 많이 발생합니다. 개발에 정답은 없는만큼, 이러한 이벤트를 구현하는 방법 또한 여러가지가 될 수 있습니다만, 언리얼 엔진에서는 이러한 상황에 사용할 수 있는 라이브러리를 마련해 놓았습니다. 이번 글에서는 언리얼 엔진에서 제공하는 SetTimer에 대하여 알아보도록 하겠습니다. 1. SetTimer : Blueprint 더보기 Bluepirnt에서 제공하는 SetTimer는 그 용도에 따라 4종류가 존재합니다. 위 4개의 액션은, 다시 두 갈래로 묶을 수 있습니다. 첫 번째는 반복여부, 반복 간 시간 등을 사용자가 자유롭게 설정할 수 있는 액션입니다. 각각의 핀에 대해서 살펴보도록 하겠습니다. Object Function Name에 있는 핀..
-
[Unreal Engine] Forums : BeginPlay execution orderUnreal Engine 5._ 2023. 1. 11. 22:44
언리얼 엔진으로 게임을 만들 때, 게임의 기반이 되는 액터들을 만들게 될 수 있습니다. 이 액터들은 게임의 기반 기능들을 가지고있지만, 엔진에서 제공하는 기본적인 템플릿 (레벨, 게임모드 및 하위 객체)과는 무관한 경우가 있습니다. 이 말은 곧, 이러한 기반 액터들이 스폰되어 있지 않아도 게임이 플레이 될 수 있다는 것 입니다. 하지만 게임에 존재하는 다른 액터 (캐릭터를 포함한)들이 이러한 기반 액터를 참조할 것은 자명하기 때문에, 위와 같이 기반 액터가 없을 경우 게임의 진행에 큰 문제가 생기게 됩니다. 에디터에서 액터를 직접 배치하는 것 만으로도 이러한 문제에서 벗어날 수 있지만, 조금 더 간편하고, 개발자가 신경쓰지 않아도 되는 시스템을 구축하기 위해, 레벨이 시작될 때 액터를 스폰하도록 코드를 ..
-
[Unreal Engine] GameMode Override in C++Unreal Engine 5._ 2023. 1. 4. 13:13
GameMode를 오버라이드 하는 것으로, 게임의 토대가 되는 규칙을 정의할 수 있습니다. 이 때, GameMode는 Default Pawn, Controller, Player State등의 액터를 가질 수 있습니다. 이번 글에서는 GameMode를 C++로 생성했을 때, 그의 일부가 되는 액터들을 오버라이드 하는 방법을 다루어보도록 하겠습니다. 1. GameMode & GameModeBase 더보기 GameModeBase는 언리얼 엔진 4.14에 소개된 클래스입니다. 기존의 GameMode를 단순화 및 효율화한 클래스입니다. GameMode는 GameModeBase의 하위 클래스로 분류되었으며, 만들고자 하는 게임의 유형에 따라 적절한 클래스를 선택할 수 있게 되었습니다. 자세한 내용은 공식 문서를 참..