전체 글

GameProgramer 취업준비 중 onestone3647@gmail.com
UCLASS() class PROJECTCE_API UMenuWidgetBase : public UUserWidget { GENERATED_BODY() public: UMenuWidgetBase(); }; UMenuWidgetBase::UMenuWidgetBase() { } 평소에 생성자를 정의할 때 위의 코드처럼 정의할 것이다. 그러나 UserWidget을 C++로 구현 할때 위의 코드처럼 생성자를 정의하면 UUserWidget의 기본 생성자가 없다고 오류를 나타낸다. 이 오류를 해결하기 위해서 다음과 같이 정의하면 된다. UCLASS() class PROJECTCE_API UMenuWidgetBase : public UUserWidget { GENERATED_BODY() public: UMenuWid..
BTTaskNode를 부모 클래스로 하는 C++ 클래스를 생성할 때 컴파일하면 에러가 발생합니다. 이 때 관련된 모듈을 참조할 수 있도록 프로젝트명의 Build.cs 파일에 GameplayTasks 모듈을 추가해야합니다. // Copyright Epic Games, Inc. All Rights Reserved. using UnrealBuildTool; public class ProjectAI : ModuleRules { public ProjectAI(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; PublicDependencyModuleNames.AddRange(new string[] ..
블랙보드와 비헤이비어 트리 애셋을 AIController가 사용하기 위해선 Build.cs 파일에 AIModule 모듈을 추가해야합니다. // Copyright Epic Games, Inc. All Rights Reserved. using UnrealBuildTool; public class ProjectAI : ModuleRules { public ProjectAI(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore",..
Unreal Engine4 C++에서 내비게이션을 사용하기 위해서는 프로젝트의 Build.cs 파일에 NavigationSystem 모듈을 추가하고 사용할 구현부에 NavigationSystem.g 헤더파일을 추가로 선언해야합니다. // Copyright Epic Games, Inc. All Rights Reserved. using UnrealBuildTool; public class ProjectAI : ModuleRules { public ProjectAI(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; PublicDependencyModuleNames.AddRange(new str..
컴포넌트를 생성할때 CreateDefaultSubobject를 사용했었습니다. 그러나 CreateDefaultSubobject는 생성자에서만 사용할 수 있습니다. 검의 양끝에 BoxComponent를 부착하고 이 두 BoxComponent 사이에 일정한 간격으로 특정 개수의 BoxComponent를 부착하는 기능을 구현하려고 할 때 평소에 사용하던 CreateDefaultSubobject는 사용할 수 없었습니다. 이를 구현하기 위해서는 게임을 시작할 때 또는 게임을 플레이 중일때 BoxComponent를 생성하여 부착해야 했습니다. 블루프린트에는 BoxCollision을 추가하는 노드가 블루프린트 전용으로 존재하였습니다. 하지만 C++로 구현할 계획이기에 해결하는데 오랜시간이 걸렸습니다. BeginPla..
이벤트 - 델리게이트(콜백) 함수. 플레이어가 죽었다고 알릴 경우 이를 인지한 주변의 적들의 행동을 멈추게 할 때 사용합니다. 이 경우 이벤트 디스패처를 호출한 쪽이 플레이어, 받는 쪽이 주변의 적들입니다. 받는 쪽이 불특정 다수이며 그냥 호출만으로 반응시키고 싶을 때는 받는 쪽에서 이를 이벤트로 구현하는 방식입니다. 적들은 계속 플레이어의 상태를 체크할 필요가 없어지며, 플레이어도 적들이 플레이어의 죽음을 체크하는지 확인할 필요가 없습니다. 인터페이스 인터페이스를 상속받은 액터는 형번환을 하지 않고 인터페이스 콜방식으로 액터에 호출만 해주면 반응합니다. 이 때 인터페이스를 상속받은 액터에서 해당 인터페이스 함수를 오버라이딩하여 구현하였다면 해당 함수를 호출했을 때 반응하고, 구현을 하지 않았다면 반응하..
언리얼 엔진에서 해더 파일(.h 파일)에 클래스 변수를 선언할 때 2가지 방법이 있습니다. UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera", meta = (AllowPrivateAccess = "true")) class USpringArmComponent* SpringArm; class 키워드를 사용한 선언과 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera", meta = (AllowPrivateAccess = "true")) USpringArmComponent* SpringArm; class 키워드를 사용하지 않은 선언입니다. SpringArmComponent를 사용..
www.unrealengine.com/ko/blog/ranged-based-for-loops?sessionInvalidated=true 언리얼 엔진 4 의 범위 기반 For 루프 언리얼 엔진 4 코드 베이스에서 C++11 에 추가된 몇 가지 멋진 기능을 활용하기로 했습니다. 새 언어를 채택할 때는 주의를 기울여야 하는 것이, 다양한 컴파일러가 지원되는 다양한 범위의 플랫 www.unrealengine.com TArray Actors; for (int32 ActorIndex=0; ActorIndexSetActorLocation(NewLocation); } 범위 기반 For 루프 적용 전 TArray Actors; for (AActor* Actor : Actors) { Actor->SetActorLocati..
한돌이
Lykan Studio