묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
콤포넌트 포인터 선언시 TObjectPtr<>과 UStaticMeshComponent* 차이점
안녕하세요, 스태틱 메쉬 콤포넌트 포인터 선언문 작성시에,UStaticMeshComponent* Body; 식으로 작성을 하는것과,강의에서 말씀하신 대로 UObjectPtr<UStaticMeshComponent> Body; 식으로 작성을 하는것의 차이점은 무엇인지요?나중에라도 참고할 수 있게 강의내용의 스코프를 살짝 벗어나는 내용이라도 설명해 주신다면 감사할 것 같습니다.
-
미해결실전! 언리얼 소울라이크 개발: A to Z
무기 콜리전 시스템에 대해
이해한 내용 :12 번째 강의를 보면 무기의 데미지 처리를 위해 CollisionComponent를 따로 생성하셨습니다. TickComponent에서 LineTracing 활성화 여부를 조절함으로써 원하는 공격 타이밍에 무기의 데미지 처리를 할 수 있게끔 구현하셨습니다. 질문할 내용 :혹시 무기에 CapsuleCollision을 부착하여 CollisionComponent 자체의 콜리전을 NoCollision 혹은 Overlap 모드로 변경하는 식의 충돌 처리와 어떤 차이가 있는 지 알 수 있을까요 ??
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
AnimNotify 구현 질문
AnimNotify 를 상속받아 Custom AnimNotify 를 만들고 Animation blueprint 의 track 에 추가했습니다. 잘 작동한 듯 하나, 에디터를 껐다 켜면, 트랙상에 AnimNotify 가 녹색으로 바뀌어 있고 동작하지 않습니다. 지우고 새로 작성, 리빌드 다 해봤는데 안됩니다. 에디터에서 클래스를 인식하지 못하면 녹색으로 나온다고 하는데 어떻게 수정해야 하나요? 에디터가 켜져 있는 동안 추가하면분홍색으로 DeadCheck 라고 뜨는데껐다 켜서 확인하면 GASDeadCheck 라고 녹색으로 떠 있습니다.
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
Experience 재시작
현재 RPG게임을 제작 중입니다. 캐릭터 사망 시 게임을 재시작하는 로직을 만들려고 하는데 기존에는 OpenLevel로 레벨을 다시 로드하는 방법으로 충분했지만 Lyra프로젝트의 경우 Experience를 비활성화 후 다시 활성화 하는 과정을 거쳐야 할 것 같은데 맞나요?Experience를 재시작한다면 로비에서 포탈을 탈 때 UserFacingExperienceDefinition을 통해 게임을 시작하듯이 재시작하는 방법이 가장 좋을까요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
FObjectInitializer 를 사용한 생성자.
일반생성자와 FObjectInitializer 를 사용한 생성자 차이점이 궁금해서제이나미에 검색을해보니 다음과 같이 답변을 합니다. FObjectInitializer는 언리얼 엔진의 객체를 생성할 때 항상 사용해야 합니다. 언리얼 엔진은 자체적인 객체 생성 및 초기화 시스템을 가지고 있으며, FObjectInitializer는 이 시스템의 핵심이에요.FObjectInitializer를 사용해야 하는 경우언리얼 엔진의 UObject를 상속받는 모든 클래스의 생성자에서는 FObjectInitializer를 사용하는 것이 원칙입니다. 대표적인 예시들은 다음과 같습니다.AActor (액터)UGameInstance (게임 인스턴스)APawn (폰)UUserWidget (위젯)UMyCustomClass (직접 만든 UObject 클래스) 현재 강의에서는 UObject 를 상속받는 클래스라도 Default 생성자를 사용하시는곳이 많은데 ,위의 답변이 틀린것이 겠지요, 어쩔때 FobjectInitializer 를 사용해야할지 , 일반생성자를 사용해야할지 잘모르겠습니다
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
강의 6분 부터 나오는 HP 변환할 때 나누기 vs map range clamped
안녕하세요. HP를 0~1 범위로 변환할 때 HP 값이 6000이라도 6000으로 나누면 잘 작동하는데, map range clamped가 나누기에 비해 좋은 점이 무엇인지 궁금합니다!
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
CharacterMovementComponent의 RotationRate관련해서 질문이 있습니다.
// Movement GetCharacterMovement()->bOrientRotationToMovement = true; GetCharacterMovement()->RotationRate = FRotator(0.f, 0.f, 0.f); GetCharacterMovement()->JumpZVelocity = 700.f; GetCharacterMovement()->AirControl = 0.35f; GetCharacterMovement()->MaxWalkSpeed = 500.f; GetCharacterMovement()->MinAnalogWalkSpeed = 20.f; GetCharacterMovement()->BrakingDecelerationWalking = 2000.f;RotationRate가 회전속도라고 이해했고 값을 바꿔봐도 변화가 안보여서 Yaw값을 0.f로 설정하고 테스트해봤는데 똑같이 회전이 됐습니다. 블루프린트 클래스도 확인해봤는데 여기서는 0으로 되어있습니다.디버깅 해봤을 때 CharacterMovementComponent의 PhysicsRotation함수에서 위 사진처럼 RotationRate가 Yaw값으로 360이 들어가고 있었습니다.Charater의 BeginPlay에서 로그를 찍어서 값을 확인해보니 여기서는 0으로 들어가는데 그럼 이후에 값이 다시 360으로 세팅되는 건가요? RotationRate 조정해보고 싶은데 어떻게 해야 되는지 궁금합니다.
-
해결됨[Rookiss R&D Lab] UE5 Framework Insight (Liu)
공부내용 블로그 게시 가능한가요?
제목과 동일합니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
[6강] ShowDebug에서 Attributes for avater가 변하지 않아요..
https://github.com/YIDO96/AttributeErrorTest 엔진은 5.4.4입니다.ASC와 AttributeSet의 기본적인 코드만 작성한 상태입니다. 한번만 확인해주세요.. 어디가 문제인지 잘 모르겠습니다..
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
11분 초반의 설명이 이해가 안됩니다.
안녕하세요. 강의 11분 초반에 MyBoom을 가리키시면서 안에 있을 경우에 Boooom을 터뜨려 주는데 없으니까 crash가 날 수 있다고 하시는데 뭐가 안에 있고 없다는 것인지 잘 모르겠습니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
4강에서 콤보 공격시 다음 공격을 할 경우 ActivateAbility가 자동으로 발동되는 이유
언리얼 5.6으로 진행하다가 이상한 버그가 터져서 다시 5.4로 복습도 할겸 해서 처음부터 만들어보고 있는데 콤보 공격할 때 ActivateAbility가 발동되고 콤보의 첫번째 공격이 끝나게 되면 무조건 EndAbility가 발동합니다. 5.6으로 했을때와 5.4로 했을때의 코드적으로 다른점도 없는데왜 처음에는 첫번째 공격을 하고 두번째 콤보 공격을 하면 EndAbility가 아닌 ActivateAbility가 다시 호출되고,두번째 할때는 왜 첫번째 공격이 끝나면 무조건 EndAbility가 호출될까요..??ㅠ
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
언리얼 공부방법에 대해 질문드립니다.
안녕하세요.언리얼엔진 을 잘하기위해서는 ,클래스 계층구조 파악, 어떻게 구현되었는지 딥하게 들여다 보는게 맞을까요?
-
미해결실전! 언리얼 소울라이크 개발: A to Z
Hit Reaction 설계
플레이어 캐릭터와 적 캐릭터 모두 공통으로 피격 모션을 사용하는 건 이해했는데, 이 로직이 무기 쪽에 들어가 있다 보니 캐릭터가 어떤 무기를 들고 있느냐에 따라 피격 모션이 달라지는 구조가 조금 부자연스럽게 느껴집니다. 이 부분은 의도된 설계인가요?
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
4강 에서 이상한 그림자가 남습니다.
다음과 같이 바닥에 이상한 그림자가 생기는데 무엇때문인가요? 강의에서도 똑같이 생기던데
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
Log 파트에서 Subtitution Macro Call 를 사용하는 방법이 무엇인가요?
이상하게도 저는 나오질 않는데 어떤 추가설정같은게 필요한건가요? 단축키가 혹시 존재하나요?
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
2강에서 카메라 회전안되시는분 참고
언리얼 5.6 버전 사용중입니다. IMC_Default 에서 IA_Look 에 저빨간부분 추가해주시면 정상적으로 돌아갑니다. IMC_MouseLock 으로 분리한거같더라구요
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
언리얼엔진 에서 새로운 클래스를 생성하면
언리얼엔진 에서 새로운 클래스를 생성하면 비쥬얼스튜디오 상에서 제가만들어놓은 필터들이 전부 초기화되서 사라져서 너무 불편한데 혹시 해결방법이 있을까요? 검색해봐도 나오지를 않네요
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
설치후 빌드하는데 에러가 발생하고 인텔리센스도 잘 활성화되지 않습니다.
"D:\UE_5.5\Engine\Build\BatchFiles\Build.bat LyraEditor Win64 Development -Project="D:\Unreal\Lyra\Lyra.uproject" -WaitMutex -FromMsBuild -architecture=x64" 명령이 종료되었습니다(코드: 6).'override'로 선언된 멤버 함수는 기본 클래스 멤버를 재정의하지 않습니다.'override'로 선언된 멤버 함수는 기본 클래스 멤버를 재정의하지 않습니다.불완전한 형식 "SlateAttributePrivate::TSlateAttributeBase<SWidget, TOptional<FSlateRenderTransform>, std::conditional<true, SlateAttributePrivate::FSlateAttributeNoInvalidationReason, TSlateAttributeInvalidationReason<EInvalidateWidgetReason::None>>::type, TSlateAttributeComparePredicate<TEqualTo<void>>, SlateAttributePrivate::ESlateAttributeType::Member>::ObjectType" (aka "TOptional<TTransform2<float>>")은(는) 허용되지 않음불완전한 형식 "TOptional<bool>"은(는) 허용되지 않음불완전한 형식 "TOptional<bool>"은(는) 허용되지 않음불완전한 형식 "TOptional<bool>"은(는) 허용되지 않음불완전한 형식 "TOptional<const FRHIDrawStatsCategory *>"은(는) 허용되지 않음불완전한 형식 "TOptional<const FRHIDrawStatsCategory *>"은(는) 허용되지 않음불완전한 형식 "TOptional<double>"은(는) 허용되지 않음불완전한 형식 "TOptional<EHorizontalAlignment>"은(는) 허용되지 않음불완전한 형식 "TOptional<EMouseCursor::Type>"은(는) 허용되지 않음불완전한 형식 "TOptional<ENamedThreads::Type>"은(는) 허용되지 않음불완전한 형식 "TOptional<EPopupMethod>"은(는) 허용되지 않음불완전한 형식 "TOptional<EPopupMethod>"은(는) 허용되지 않음불완전한 형식 "TOptional<EPopupMethod>"은(는) 허용되지 않음불완전한 형식 "TOptional<ETextureDimension>"은(는) 허용되지 않음불완전한 형식 "TOptional<ETextureDimension>"은(는) 허용되지 않음불완전한 형식 "TOptional<EVerticalAlignment>"은(는) 허용되지 않음불완전한 형식 "TOptional<FAccessibleWidgetData>"은(는) 허용되지 않음불완전한 형식 "TOptional<FCppClassTypeInfo>"은(는) 허용되지 않음불완전한 형식 "TOptional<float>"은(는) 허용되지 않음불완전한 형식 "TOptional<FMaterialLayersFunctions::ID>" (aka "TOptional<FMaterialLayersFunctionsID>")은(는) 허용되지 않음불완전한 형식 "TOptional<FNetworkCongestionControl>"은(는) 허용되지 않음불완전한 형식 "TOptional<FRegexPattern>"은(는) 허용되지 않음불완전한 형식 "TOptional<FRHIBreadcrumbNode *>"은(는) 허용되지 않음불완전한 형식 "TOptional<FSizeParam>"은(는) 허용되지 않음불완전한 형식 "TOptional<FSlateClippingState>"은(는) 허용되지 않음불완전한 형식 "TOptional<FString>"은(는) 허용되지 않음불완전한 형식 "TOptional<FString>"은(는) 허용되지 않음불완전한 형식 "TOptional<FString>"은(는) 허용되지 않음불완전한 형식 "TOptional<FString>"은(는) 허용되지 않음불완전한 형식 "TOptional<FText>"은(는) 허용되지 않음불완전한 형식 "TOptional<int32>" (aka "TOptional<signed int>")은(는) 허용되지 않음불완전한 형식 "TOptional<int32>" (aka "TOptional<signed int>")은(는) 허용되지 않음불완전한 형식 "TOptional<int32>" (aka "TOptional<signed int>")은(는) 허용되지 않음불완전한 형식 "TOptional<int32>" (aka "TOptional<signed int>")은(는) 허용되지 않음불완전한 형식 "TOptional<int32>" (aka "TOptional<signed int>")은(는) 허용되지 않음불완전한 형식 "TOptional<TCircularBuffer<TUniquePtr<FBitReader, TDefaultDelete<FBitReader>>>>"은(는) 허용되지 않음불완전한 형식 "TOptional<TSharedRef<const SWidget, ESPMode::ThreadSafe>>"은(는) 허용되지 않음불완전한 형식 "TOptional<TSharedRef<SWidget, ESPMode::ThreadSafe>>"은(는) 허용되지 않음불완전한 형식 "TOr<TAndValue<<error-constant>, TIsPODType<TOptional<FString>>>, TIsArithmetic<TOptional<FString>>>"은(는) 허용되지 않음식별자 "FTextureBuildSettings"이(가) 정의되어 있지 않습니다. 이렇게 오류가 발생하는데 왜그럴까요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
FPerContextData에 대해 질문이 있어요
struct FPerContextData { TArray<TSharedPtr<FComponentRequestHandle>> ExtensionRequestHandles; TArray<TWeakObjectPtr<APawn>> PawnsAddedTo; };이렇게 멤버들을 배열로 들고있잖아용 그리고 GameFeatureAction_AddInputConfig에서 각 Client들의 Context는TMap<FGameFeatureStateChangeContext, FPerContextData> ContextData;이 친구가 들고있는걸로 보입니다. 그럼 왜 FPerContextData가 멤버들을특히 Pawn을 배열로 관리할까 궁금합니다!데디서버같은상황을 고려해서 그런건가요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
OnGameFeatureActivating와 WorldContext관해 질문 있습니다.
안녕하세요GameFeatureAction_AddInput #2 강의를 보면서 왜 WorldContext를 사용하는지 이해를 마쳤는데 아래 함수에서 이미 PIE의 현재 World의 WorldContext를 가져오고 그 Context에서 FGameFeatureActivatingContext의 데이터를 세팅한 후 OnGameFeatureActivating의 인자로 보내주잖아용void ULCExperienceManagerComponent::OnExperienceFullLoadCompleted() { ... FGameFeatureActivatingContext Context; { UWorld* World = GetWorld(); const FWorldContext* ExistingWorldContext = GEngine->GetWorldContextFromWorld(World); if (ExistingWorldContext) { Context.SetRequiredWorldContextHandle(ExistingWorldContext->ContextHandle); } } auto ActivateListOfActions = [&Context](const TArray<UGameFeatureAction*>& ActionList) { for (UGameFeatureAction* Action : ActionList) { if (Action) { Action->OnGameFeatureActivating(Context); } } }; ... } ... } 그런데 왜 UGameFeatureAction_WorldActionBase::OnGameFeatureActivating에서굳이 WorldContext를 순회하면서 다시 체킹하는식으로 코드를 만들었을까? 제가 이해를 못한 부분이 있나? 의문이 들어서 질문을 남깁니다.OnGameFeatureActivating의 인자로 FWorldContext도 받으면 되지 않나? 라는 생각이 들어서요..