목록Game Dev/Unreal C++ : Dev Log (51)
KoreanFoodie's Study
UFUNCTION 과 FORCEINLINE 일반적으로, UFUNCTION 과 FORCEINLINE 은 호환되지 않는다. 우리가 UFUNCTION 을 붙이는 이유는 대개 블루프린트에서 해당 함수를 호출할 필요가 있기 때문인데, C++ 에서 작성된 코드를 BP 에서 읽어오려면, FORCEINLINE 을 붙이지 않아야 한다(Function call 의 형태이어야 함). 따라서 아래와 같은 함수는 블루프린트에서 인식되지 않는다. UFUNCTION(BlueprintCallable) FORCEINLINE void Foo() {}
AddMovementInput 함수로 간단하게 처리하기 ////////////////////////////////////// ////////////////////////////////////// BlasterCharacter.h ////////////////////////////////////// ////////////////////////////////////// #pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "BlasterCharacter.generated.h" UCLASS() class BLASTER_API ABlasterCharacter : public ACharacter { GENERATED_..
UPoseableMeshComponent 언리얼에서 GhostTrail 등을 구현할 때, UPoseableMeshComponent 를 사용하는 것을 볼 수 있다. UPosebleMeshComponent 는 무엇일까? 먼저 정의로 넘어가보면, /** *UPoseableMeshComponent that allows bone transforms to be driven by blueprint. */ UCLASS(ClassGroup=Rendering, hidecategories=(Object,Physics), config=Engine, editinlinenew, meta=(BlueprintSpawnableComponent)) class ENGINE_API UPoseableMeshComponent : public ..
AttachedActors vs ChildActors 만약 다음과 같이 부모 액터에 부착된 액터들을 삭제하려고 하면 어떻게 해야 할까? 만약 현재 액터에 자식으로 설정된 ActorComponent 들의 경우, 다음과 같은 코드로 조회할 수 있다. TArray tempChildActors; AActor* owner = GetOwner(); // SomeChildActor->SetOwner(this); 가 어디선가 실행되었다고 가정 owner->GetAllChildActors( tempChildActors, true ); uint32 count = tempChildActors.Num(); 하지만 위와 같은 경우나, 무기를 캐릭터의 소켓에 부착 (AttachToComponent) 하는 경우..
오브젝트 생성 및 애셋 불러오기 언리얼에서 오브젝트를 생성하고 애셋을 불러올 때는 보통 CreateDefaultSubobject 로 CDO 를 만들어 준 다음, ConstructorHelpers::FObjectFinder 로 애셋을 연결시켜 준다. 이 과정을 단축시켜주는 Helper Function 을 만들어 사용해 보자. CHelpers.h #pragma once #include "CoreMinimal.h" #include "Components/SkeletalMeshComponent.h" #include "Kismet/GameplayStatics.h" #include "Particles/ParticleSystem.h" #include "NiagaraSystem.h" #include "NiagaraFun..
화면에 출력하는 로깅시스템 콘솔에 출력했던 것과 비슷하게, 이번에는 UE_LOG 가 아닌 AddOnScreenDebugMessage 함수를 활용해 화면에 값을 출력해보자. 출처는 여기! CLog.h class UE_PROJECT_NAME_API CLog { public: static void Print(int32 InValue, int32 InKey = -1, float InDuration = 10, FColor InColor = FColor::Blue); static void Print(float InValue, int32 InKey = -1, float InDuration = 10, FColor InColor = FColor::Blue); static void Print(const FString& I..
언리얼 로그 언리얼은 UE_LOG 함수를 이용하여 로그를 출력한다. 먼저, .h 파일에 카테고리를 선언하고, 그에 맞는 정의를 .cpp 파일에서 Define 해주면 된다. MyGame.h //General Log DECLARE_LOG_CATEGORY_EXTERN(LogMyGame, Log, All); //Logging during game startup DECLARE_LOG_CATEGORY_EXTERN(LogMyGameInit, Log, All); MyGame.cpp #include "MyGame.h" //General Log DEFINE_LOG_CATEGORY(LogMyGame); //Logging during game startup DEFINE_LOG_CATEGORY(LogMyGameInit); 헤더..
Level Design 컨셉 : 무한맵. 4 개중의 하나의 방향으로 이동함. 목표 지점이 정해져 있음. 목표지점에 도달하여, 성화를 봉송하면 게임이 클리어. 전투 : 새 공간에 도착하면, 문이 닫히면서 적이 랜덤으로 스폰된 적과 싸우게 됨. 목표 지점에 가까이 갈수록 적이 강력해짐. 목표 지점 방에서는 보스와 전투를 하게 만들 수도 있음. 전투 완료 : 적을 전부 무찌르면, 2개의 아이템 박스가 나옴. 이때 선택을 해야 함. 선택지는 다음과 같음. 무기변경 무기강화 무기 내구도 수리 캐릭터 HP 증가 캐릭터 이동속도 증가 캐릭터 공격속도 증가 다만 2 가지 전부 효과 카테고리는 같은데, 하나는 "100% 확률로 10% 성능 향상" 이며, 나머지 하나는 "10% 확률로 성능 50% 상승, 40%확률로 성능..
언리얼에서 멤버 변수 선언의 윗줄에 UPROPERTY 매크로를 추가하면 자동으로 하단의 변수 선언 구문이 오른쪽으로 이동한다. 이를 자동조정하기 위해서는 비주얼 스튜디오 추가 확장 도구를 비주얼 스튜디오에 설치해야 한다! 링크는 아래에 있다 : https://github.com/hackalyze/ue4-vs-extensions GitHub - hackalyze/ue4-vs-extensions: Useful UE4 Visual Studio extensions. Useful UE4 Visual Studio extensions. Contribute to hackalyze/ue4-vs-extensions development by creating an account on GitHub. github.com 일단 ..
언리얼 프로젝트 구조를 변경하고, 모듈을 추가하는 작업을 한 후, 비주얼 스튜디오에서 "솔루션 다시 빌드" 를 했는데 빌드를 실패했다. 그리고 이런 에러 메시지가 떴다! (22/6/17 추가 : 문제가 되는 dll, pdb 파일을 삭제하면 해결됨) 그리고 나온 크래시 리포터. LoginId:be4263854175519d068bceae3ec68e43 EpicAccountId:8d541bf740fd4c8aa2ddbf45e5614f37 Assertion failed: Object->HasAnyFlags( RF_BeginDestroyed ) && !Object->HasAnyFlags( RF_FinishDestroyed ) [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/Co..