묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1)
아이템 #9 강의 3:40초에 나오는 파일을 찾고 있어요
GA_Widget_Inventory가 연결되어 있지 않아서찾아보니 안보이는데 혹시 Interaction#1 강의자료에 있는 GA_Widget_Inventory.uasset을 가져와서 쓰거나 올려주신 lyra_based에 있는 걸 이주해오면 문제 없을까여?
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
HandleStartingNewPlayer_Implementation 함수 로딩 순서
Experience Load #2 강의에서,HandleStartingNewPlayer_Implementation 함수에서 if(IsExperienceLoaded())로 막았는데도 불구하고 캐릭터가 스폰이 됩니다.브레이크포인터로 찍어보았을 때 if(IsExperienceLoaded()) 구문 속에 있는 곳으로 넘어가지는 않지만 앞으로 계속 진행해보니 SpawnDefaultPawnAtTransform_Implementation으로 바로 넘어가지는듯 합니다..혹시 버전이 5.5.3인데, 5.5 넘어오면서 뭔가 패치가 된 점이 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
언리얼엔진5.1.1 c++ 프로젝트 생성 시 오류 발생
블루프린트 프로젝트를 생성할 땐 아무 문제 없이 잘 생성이 되는데, c++ 프로젝트를 생성하면 이런 오류가 뜹니다...영상에서 나오는 것처럼 똑같이 했습니다.그리고 구글링도 해보고, ai한테도 물어보고, 공식 사이트에서도 자료 찾아보고 해결법을 다 따라해봐도 해결이 되지 않습니다.어제부터 오늘 계속 찾아보고 해결하고 싶은데 되지 않아 이렇게 글을 써봅니다 ㅠㅠ
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
디버깅 할 때 Keyboard event 1
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Keyboard event 1 로 계산식을 작성하고 과정을 보려고 레벨을 플레이 해서 봤더니 키보드로 1번 버튼을 누르기 전까지는 계산식이 실행되지 않아서 계산식 중간에 값이 어떻게 나오는지 확인이 되지 않습니다. 플레이를 시작하면 마우스가 플레이 화면 밖으로는 나가지 않아서 식을 확인할 수가 없습니다.계산식 결과를 확인하려면 event beginplay 로 먼저 확인한 다음에 keyboard event 1 로 바꿔주어야 하나요?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
5.1 버전이 없고 5.5 버전이 있어서 그걸로 열라는데 안열려요
프로젝트 다운로드해서 5.5버전으로 바꿔서 열려니까 안열리는데 열 수 있는 방법이 5.1로 여는거 말고는 없나요?? 용량이 없어서 5.1도 받기 부담스러워서요ㅠㅠ
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
8강의 수업 내용들 중 이해가 잘 안가는 부분들이 있습니다.
1 . RegisterGameplayTagEvent 델리게이트 질문 ASC->RegisterGameplayTagEvent(ABTAG_CHARACTER_INVINSIBLE, EGameplayTagEventType::NewOrRemoved).AddUObject(this, &UABGASHpBarUserWidget::OnInvisibleTagChanged); 다음 코드를 다음과 같이 이해했는데 맞을까요?INVINSIBLE 태그가 GE에 부착(count+1)되거나 탈착(count-1)될때 알림을 주는 델리게이트. 기본 count=0 2.Pre/PostGameplayEffectExecute 함수 질문저는 이 함수가 ApplyGameplayEffectSpecTo~함수로 GE를 실행시키기 직전이랑 직후에 호출되는 걸로 알고 있습니다.PreGameplayEffectExecute 함수는 게임 플레이 이팩트 적용 전에 호출된다고 들었는데요. 하지만 확인해본 결과 ,공격할 때 게임 플레이 이팩트가 실행되어 DamageAttritbute값이 Modifier연산을 통해 30으로 변경된 이후에PreGameplayEffectExecute 함수가 호출되었습니다. "게임 플레이 이팩트 적용 전" 이란 말이 GE를 실행하기 직전, 즉 Modifier연산이 아직 되기 전으로 이해하고 있었는데 이게 아닌가요? PreGameplayEffectExecute와 PostGameplayEffectExecute의 정확한 차이가 뭔지 햇갈립니다. 그리고 GE_AttackHitBuff 가 발동하면 Pre/PostGameplayEffectExecute 함수가 호출되는지 테스트를 해봤는데 제 생각과는 다르게 호출이 안됩니다. (Data.EvaluatedData.Attribute == GetAttackRadiusAttribute()) 이런식으로 조건문을 넣어서 디버깅을 했는데 전혀 들어오지를 않네요.GE_AttackHitBuff도 다른 GE와 마찬가지로 Pre/PostGameplayEffectExecute 함수에 들어와야 정상아닌가요? 3 . 중첩 버프 질문instant는 Base값을 변경하지만, 기간형은 Current값을 변경한다고 들었는데요. AttackRaius의 Base값이 50이고 Current값은 0 으로 시작해서, 공격할수록 Current에 +15씩 증가해 Base값을 직접 수정하지 않고 Current 값만 증가시켜서 어떻게 범위를 키우는 거죠? Base값은 아예 안쓰고 하나요? 내부적으로 어떻게 돌아가는지 좀 햇갈립니다. 그리고 Duration과 Stack 에 대해 다음과 같이 이해했는데 이게 맞을까요?Duration을 2초로 했을 때, 2초가 지나기 전에 공격해서 다시 한번 GE를 동작시키면 2초로 다시 리셋되고 스택이 쌓이는데, 2초를 놓칠경우 Current값이 처음으로 돌아와서 범위가 기본으로 리셋된다.
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
7강 GE로 NonPlayer의 어트리뷰트셋 값을 초기화시키는 것에 질문이 있습니다.
GE만 단독으로 동작시킬 때는 컨텍스트 핸들을 따로 만들어주고서 , 스팩핸들을 제작해주는데, 그에 반해 GA에서 GE를 동작시킬때는 스팩핸들만 제작해주는데, 그 이유가 GA가 이미 컨텍스트 핸들을 만들어줬기 때문일까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
강의 외 질문입니다
InitCapsuleSize(0.5, 1.2) 정도의 크기에 Character 작업을 하면 언리얼에서는 부작합 할까요??
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
43:06 OnRep_Owner 함수 질문
처음 듣는 개념들이 많아서 글을 정리하며 강의를 보고 있는데, OnRep_Owner 를 Override 해서 사용할 때 Super::PostNetInit() 을 실행해야하는 이유가 있을까요?아니면 복붙하는 과정에서 일어난 단순 오타인가요?제가 수업을 놓친 건지 헷갈려서 질문 남깁니다 밑에 같은 질문이 있었네요 오타인 거 확인했습니다. 이번 강의도 감사합니다
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
레벨 블루프린트 제작 후 실행 시 메시지 로그- 맵체크 창 뜨는 경우
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 레벨 블루프린트 제작 후에 실행 을 눌렀는데 메시지 로그 -맵체크가 뜨고 창을 닫으니까 레벨에 화면이 검은색으로 보입니다. 블루프린트로 print text 작성한 부분은 화면에 잘 뜨는데 레벨이 아예 검은색으로 보이는데 혹시 레벨 제작 과정에서 문제가 있었던 걸까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
강의 외 질문입니다.
제가 현재 NPC가 플레이어가 공격 범위 내에 없으면 쫓아오게 하였습니다. 이때 NPC에서 공격범위의 값을 바꾸고 싶어서 UPROPERTY로 변수를 선언을 하였습니다.커스텀 데코레이터에서 공격범위 값을 가져오기 위해 Interface를 만들어서 캐스팅을 해주었습니다.하지만 플레이를 해보면 Interface가 없다고 나옵니다. 뭐가 잘못된 것일까요..? class LIFEOFLUCK_API IOLNPCInterface { GENERATED_BODY() // Add interface functions to this class. This is the class that will be inherited to implement this interface. public: virtual float AttackRange() = 0; };#include "CoreMinimal.h" #include "Character/OLCharacterBase.h" #include "Interface/OLNPCInterface.h" #include "OLNPCBasic.generated.h" UCLASS() class LIFEOFLUCK_API AOLNPCBasic : public AOLCharacterBase, public IOLNPCInterface { ... protected: virtual float AttackRange() override; UPROPERTY(EditAnywhere, Category = "AttackRange") float AttackRangeValue = 160; // 공격 범위 값 };float AOLNPCBasic::AttackRange() { return AttackRangeValue; }#include "AI/BTDecorator_AttackRange.h" #include "AIController.h" #include "BehaviorTree/BlackboardComponent.h" #include "Interface/OLNPCInterface.h" DEFINE_LOG_CATEGORY(Not); UBTDecorator_AttackRange::UBTDecorator_AttackRange() { } bool UBTDecorator_AttackRange::CalculateRawConditionValue(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) const { Super::CalculateRawConditionValue(OwnerComp, NodeMemory); APawn* NPC = OwnerComp.GetAIOwner()->GetPawn(); if (NPC == nullptr) { UE_LOG(Not, Error, TEXT("No NPC")); return false; } FName PlayerName = TEXT("Target"); APawn* Player = Cast<APawn>(OwnerComp.GetBlackboardComponent()->GetValueAsObject(PlayerName)); // 타겟인 플레이어 가져오기(캐스팅하기) if (Player == nullptr) { UE_LOG(Not, Error, TEXT("No Target")); return false; } IOLNPCInterface* NPCInterface = Cast<IOLNPCInterface>(NPC); // NPC가 인터페이스를 생성한 경우 캐스팅이 됨 if (NPCInterface) { UE_LOG(Not, Error, TEXT("No NPCInterface")); return false; } float Distance = FVector::Dist(NPC->GetActorLocation(), Player->GetActorLocation()); // NPC와 플레이어 사이의 거리 구하기 float AttackRange = NPCInterface->AttackRange(); bool AttackRangeResult = Distance <= AttackRange; UE_LOG(LogTemp, Display, TEXT("Distance: %f"), Distance); UE_LOG(LogTemp, Display, TEXT("AttackRange: %s"), AttackRangeResult ? TEXT("True") : TEXT("False")); return AttackRangeResult; }
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
프로젝트명 변경 또는 이주 시 발생하는 문제를 여쭤보고 싶습니다.
프로젝트명을 변경할 때 겪는 문제들로 인해 삭제하고 다시 생성하느라 시간을 많이 소비하고 있습니다.제가 겪고 있는 문제점들을 짚어보겠습니다! 공식적으로 편리하게 이주 또는 프로젝트명 변경을 할 수 있는 방법을 알고싶습니다.버전은 5.4.4 사용 중입니다. 기존 프로젝트명: ArenaBattle변경한 프로젝트명: BEAD 프로젝트명 변경 이후 기본적으로 진행한 작업들DefaultEngine.ini에 Redirect할 경로들 모두 적은 후 .uasset 데이터들 옮기기소스코드 내 모든 모듈명 교체, .uproject 명세서 내 모듈명 교체, Build.cs 내 모듈명 교체 (버전 확인도 제대로 수행)Saved, Intermmidate, DerivedDataCache, Binaries, 솔루션 삭제 후 generate -> Rebuild에디터 내 Content 폴더 우클릭 > Update Redirector ReferencesC++ 클래스 생성자 내 참조하는 경로 모두 변경한 프로젝트 경로로 설정 & 에디터의 모든 블루프린트 내 Parent 경로 Redirect한 것으로 적용된 것 확인에픽게임즈 라운처 > 언리얼 엔진 > 검증 수행 질문 모음1. Redirect를 시도했는데도 불구하고 "행동 트리"와 "데이터 애셋"의 경우, 참조하는 클래스가 새로운 프로젝트명의 클래스를 찾지 못하는 문제시도한 내용:Redirect 사용 시 Widget Blueprint 등은 Parent 경로는 잘 찾았으나 Behavior Tree 내 클래스 경로와 데이터 애셋의 경로는 제대로 찾지 못해 삭제하고 다시 생성해야 하는 경우가 발생했습니다. (물론, Redirect 작성 이후 .uasset을 옮기고 캐시 삭제 및 generate 수행)// DefaultEngine.ini // [CoreRedirects] +ClassRedirects=(OldName="/Script/ArenaBattle.ABComboActionData", NewName="/Script/BEAD.ABComboActionData") // 애셋 데이터 +ClassRedirects=(OldName="/Script/ArenaBattle.BTService_Detect",NewName="/Script/BEAD.BTService_Detect") // 행동트리 ... 이하 생략 2. Animation Montage의 경우, 정보들은 그대로 잘 옮겨져 Notifies도 제대로 배치되어 있지만삭제하고 다시 설치하지 않으면 C++ 클래스 내 Notify 함수가 호출되지 않는 현상아래 AM_ComboAttack 몽타주는 Redirect를 사용하여 정상적으로 열리고, 모든 내용들이 잘 배치가 되어 있으나아래 AttackHitCheck 노티파이를 삭제하고 다시 배치하지 않으면 C++ Notify 함수가 재생되지 않는 현상이 발생합니다. 3. 기존 모듈명은 이미 수정하여 어느 곳에도 존재하지 않는데 자꾸 VerifyImport: Failed to find script package for import object 'Package/Script/ArenaBattle' 경고가 뜨는 현상모든 소스코드와 명세서, 그리고 블루프린트 내에도 이전 모듈명과 관련된 내용이 없는데도 엔진을 실행하면 아래 경고문이 나옵니다. (당연히 캐시 삭제와 generate, rebuild, update redirector references 수행했습니다.)물론, BP_ABGameMode.uasset을 다시 지우고 생성하면 해결되겠지만위의 질문들을 포함해서 Redirect를 사용하고 코드를 전부 수정해도 자꾸 적용이 안되는 게 생기고 아래 오류가 생기니 새로 삭제하고 다시 만들어야 하는 번거로움이 있습니다 ㅜ 해결방법을 알고싶습니다.LogLinker: Warning: [AssetLog] D:\4.Unreal\BEAD\Content\ArenaBattle\Blueprint\BP_ABGameMode.uasset: VerifyImport: Failed to find script package for import object 'Package / Script / ArenaBattle'
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
AI #4 질문
퍼셉션과 시각정보를 이용하지 않고 OverlapMultiByChannel로 적을 탐지하면 장점이 있을까요?
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
7강 정리했는데 검토부탁드려요
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
비주얼 스튜디오 정의보기창? 정의 피킹?을 기본으로 사용하시는 거 같은데 어떻게 설정하나요?
cpp에 자동 선언 할 때나 f12로 레퍼런스 여실 때 작은 살펴보기 창이 열리는데 저는 alt f12를 눌러야 열립니다어떻게 설정해야 기본값으로 설정되나요?
-
해결됨[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1)
Item#12 ItemTemplateID 에러
Item#12 강의에서 마지막에 실행하려고 하면 아래와 같이 ItemTemplateID를 가져오지 못하는 문제가 발생합니다. 그 전까지 발생하지 않았는데 B_Character_Base와 B_HeroCharacter_Base 이동 후에 발생하는 것으로 보아 이 과정에서 뭔가 잘못된 것이 있는 것인지 문의 드립니다. ItemTemplateClass도 넘어오고 ItemTemplateClassToID에도 해당 항목이 있는 것 같은데 ItemTemplateID를 가져오지 못하는 것 같습니다. ItemTemplateID를 가져오지 못하네요
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
5강 정리해봤는데 검토부탁드립니다.
간략하게 5강 실습내용들을 정리해봤는데 검토부탁드려요.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
입력
입력에 대한 처리를 SetupPlayerInputComponent()를 통해 직접 정의한 함수와 바인딩할 수 있는데, 입력 키는 어떻게 설정할 수 있나요? 인풋 액션 클래스를 따로 정의하면 가능한 일인가요? 현재 블루프린트의 인풋 클래스를 사용해서라고 예상중입니다. 또한, CharacterBase에 있는 이 코드는 이 클래스를 상속받는 Pawn의 고유 값으로 설정되는건가요? 하위 클래스들에게 독립적으로 적용시키도록 할 수도 있는건가요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
CharacterPlayer::Move()
안녕하세요. 강의 37분정도까지 따라서 소스 작성하고 실행을 해봤는데요.캐릭터의 움직임이 A,D가 앞뒤이고, W,S가 좌우로 움직이더라구요 혹시 Move함수에서 뭘 바꿔야하나 생각해서 AddMovementInput(ForwardDirection,MovementVector.X);AddMovementInput(RightDirection,MovementVector.Y);부분을 AddMovementInput(ForwardDirection, MovementVector.Y); AddMovementInput(RightDirection, MovementVector.X);로 바꾸니 제대로 동작하더라구요. 혹시 이유가 뭔지 알수있을까요?
-
미해결아티스트를 위한 언리얼 셰이더 기초
깃허브 저장소에 'UEShaderForArtistBasic' 이 없네요..
강의용 샘플 프로젝트 깃허브 저장소가 없습니다..ㅠㅠ