게임 엔진/Unreal

게임 엔진/Unreal

[Unreal] [Example] 객체 직렬화 방법

Serialization (Memory Archive) 언리얼에서 제공하는 기본적인 메모리 직렬화 객체 FMemoryArchive를 활용한 예제이다. 언리얼에서는 메모리 읽기, 쓰기 기능을 지원하기 위해 FMemoryArchive를 상속하여 FMemoryReader, FMemoryWriter 형태로 제공한다. #include "Serialization/MemoryWriter.h" #include "Serialization/MemoryReader.h" void SerializationExamples::BaseExample() { UE_LOG(LogTemp, Log, TEXT("BaseExample Begin")); // write data to memory TArray BufferArray; FMemory..

게임 엔진/Unreal

[Unreal] [Editor] Slate를 이용한 에셋 경로 설정 다이얼로그 제작

Asset Path Pick Dialog 예제 다음 코드로 에셋의 경로를 가져오는 다이얼로그를 띄울 수 있다. if문 내부에서 다이얼로그가 닫히고, 가져온 경로를 사용할 수 있다. FString NewNameSuggestion = FString(TEXT("Suggestion")); FString PackageNameSuggestion = FString(TEXT("/Game/")) + NewNameSuggestion; FString Name; TSharedPtr PickAssetPathWidget = SNew(SDlgPickAssetPath) .Title(LOCTEXT("MyTitleName", "Choose Your Location")) .DefaultAssetPath(FText::FromString(P..

게임 엔진/Unreal

[Unreal] [Editor] [Example] Slate 예제 1

Custom Slate Class 만들기 Slate를 이용한 커스텀 클래스 ui 제작 예제이다. 참고 영상 https://www.youtube.com/watch?v=jeK6DPB5weA MyPlugin.Build.cs ... PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); ... SMainMenuWidget.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "SlateBasics.h" #include "SlateExtras.h" class MENU_API SMainMenuWidget..

게임 엔진/Unreal

[Unreal] [Editor] [Example] Slate 예제 2

Slate Samples Unreal editor ui framework인 slate에 대한 예제이다. SButton #include "Widgets/Input/SButton.h" TSharedPtr FMyPluginModule::Create() { return SNew(SButton) .Text(WidgetText) .OnClicked(FOnClicked::CreateRaw(this, &FMyPluginModule::OnClickButton)); } FReply FMyPluginModule::OnClickButton() { UE_LOG(LogTemp, Warning, TEXT("OnClickButton")); return FReply::Handled(); } SAssetSearchBox // "Edit..

게임 엔진/Unreal

[Unreal] [Editor] Unreal Plugin 제작 방법

Plugin Start Unreal plugin 시작방법 예제이다. 1. 메뉴바 -> 편집 -> 플러그인 2. 오른쪽 하단 새 플러그인 클릭 3. 에디터 툴바를 사용하는 "에디터 툴바 버튼"으로 플러그인 생성 (MyPlugin) 4. 프로젝트 재시작 시 에디터 툴바에 MyPlugin을 확인할 수 있음 5. 플러그인 소스는 visual studio 프로젝트에서 수정할 수 있음 모듈 기본 코드 Header #pragma once #include "CoreMinimal.h" #include "Modules/ModuleManager.h" class FToolBarBuilder; class FMenuBuilder; class FMyPluginModule : public IModuleInterface { publi..

게임 엔진/Unreal

[Unreal] Animation Notify를 이용한 충돌처리 (AnimNotify, Collision)

Collision by Animation Notify 애니메이션 notify를 통해 캐릭터 객체의 공격 궤적에 따른 충돌처리 예제이다. Header // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "MyCharacter.generated.h" class UStaticMeshComponent; UCLASS() class ANIMATIONRETARGET_API AMyCharacter : public ACharacter { GENERATED_BODY() public: /..

게임 엔진/Unreal

[Unreal] Physics Body의 기하 정보를 이용한 충돌처리

Physics Collision with AggregateGeom Shapes 캐릭터가 공격할때 오른손 캡슐에 의한 충돌판정을 위한 예제이다. Physics Asset 먼저 충돌판정에 사용할 BodyInstance이다. 이후 코드를 통해 이 BodyInstance의 궤적에 따른 충돌을 판정할 것이다. Header #pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "MyCharacter.generated.h" class UStaticMeshComponent; UCLASS() class ANIMATIONRETARGET_API AMyCharacter : public ACharacter { GENERATED_BO..

게임 엔진/Unreal

[Unreal] [Example] 콘솔 커맨드 제작 방법 (Console Command)

Console Command Unreal 콘솔 커맨드 관련 예제이다. Source #include "HAL/IConsoleManager.h" ... // call this from start - ex) gamemode being void Utility::InitConsoleCommand() { FConsoleCommandWithArgsDelegate Delegate; Delegate.BindStatic(&Utility::ConsoleCommand); IConsoleManager::Get().RegisterConsoleCommand( TEXT("insooneelifeCmd"), TEXT("insooneelife test cmd"), Delegate); } // this is static function v..

게임 엔진/Unreal

[Unreal] 디버깅용 드로워 이용 방법 (Draw Debug)

Debug Draw Unreal engine 개발 과정에서 화면상에 원하는 도형을 그려서, 디버깅을 수월하게 도와주는 함수들에 대한 예제이다. Draw Debug #include "DrawDebugHelpers.h" ... void Examples::DebugDrawExample(UWorld* World) { FVector StartOffset = FVector(0, 0, 200); FVector LocationOne = FVector(0, 0, 600) + StartOffset; FVector LocationTwo = FVector(0, -600, 600) + StartOffset; FVector LocationThree = FVector(0, 600, 600) + StartOffset; FVector..

게임 엔진/Unreal

[Unreal] 코드 단위 프로파일링 (Profile)

Profile In Code 언리얼 개발 과정중 소스코드 단위로 프로일링이 필요한 상황이 올 수 있다. 이를 대비하여 언리얼 엔진에서 지원해주는 기능이 있다. 프로파일링을 위한 그룹 선언 먼저 프로파일링 그룹을 선언한다. DECLARE_STATS_GROUP(TEXT("Sample"), STATGROUP_Sample, STATCAT_Advanced); 프로파일링 영역 설정을 위한 개체 선언 코드 영역에 적용하기 전에 영역 개체를 정의한다. DECLARE_CYCLE_STAT(TEXT("Agent [Tick]"), STAT_AgentTick, STATGROUP_Sample); 프로파일링 대상 영역에 적용 이제 프로파일링 대상 영역에 적용한다. void ACharacterAgent::Tick(float Delt..

게임 엔진/Unreal

[Unreal] [Example] 데이터 이용 방법 (DataAsset)

Data Asset Unreal engine에서 파일에 저장된 데이터를 읽어오거나, 파일로 데이터를 저장하는 형태로 데이터를 사용해야 하는 상황이 생길 수 있다. 이러한 상황에서 엔진에서 지원하는 data asset을 이용하면 효과적이다. Data asset을 이용하기 위해서 먼저 사용하고자 하는 data 형태를 c++로 작성한다. Data Asset 정의하기 #include "Engine/DataAsset.h" UCLASS() class TESTWORLD_API UCustomDataAsset : public UPrimaryDataAsset { GENERATED_BODY() public: UPROPERTY(EditAnywhere) FString itemName; UPROPERTY(EditAnywhere)..

AlgorFati
'게임 엔진/Unreal' 카테고리의 글 목록 (2 Page)