inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

13강 헤드업 디스플레이 강의중 질문입니다

해결됨

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

플레이어 컨트롤러의 코드 부분에서 TEXT 안에 부분을 레퍼런스를 복사한뒤_C 붙여서 넣어도 보고 지웠던 앞의 부분을 남겨두어도 보고 했는데 지속적으로 CDO Constructor Failed to Find 에러가 뜹니다. 게임 데이터 연동을 하기 전에는 잘 작동되었었는데 데이터 연동을 하니 이런 오류가 뜨는데 혹시 이유를 알 수 있을까요? static ConstructorHelpers::FClassFinder<UABHUDWidget> ABHUDWidgetRef(TEXT("")); if (ABHUDWidgetRef.Class) { ABHUDWidgetClass = ABHUDWidgetRef.Class; }

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
junhwan5245 댓글 2 좋아요 1 조회수 334

Cast함수 문법

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

Owner = Cast<ACharacter>(GetOwningActor()); if (Owner) { Movement = Owner->GetCharacterMovement(); } 블프에서 캐스트를 당연한게 늘썼는데,코드에서 보니 반가워서 생략된건가싶어, Owner =ACharacter* Cast<ACharacter>(GetOwningActor()); 라고 쓰니까 에러가 납니다. F12눌럿 보니, FORCEINLINE To* Cast(From* Src) 로 되있는데, 왜 지금은 자료형을 표시안하는게 맞나요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
eunjeong seo 댓글 1 좋아요 0 조회수 262

GenerateVisualStudio메뉴와 폴더관리,개별강의공부문의

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

안녕하세요. 제너레이트와 스위치메뉴가 있었는데,어느순간부터 메뉴가 안보이는거같습니다. 이경우는 언리얼을 다시 설치하나요? 비주얼스튜디오를 다시 설치하나요? 폴더위치를 잘못 넣은경우는 비주얼스튜디오에서 폴더만들어 이동하면되나요? Saved,DDC,Intermediate 는 지워도 되는폴더들이라고 알고있는데, 꼬여서 지우는경우에,언리얼에서 재빌드하라고 뜨고 uproject는 안열리고,비주얼스튜디오는 코드파일들이 안읽히는 경우는 어떻게 하면될까요? 위의 과정들로 프로젝을 몇번을 다시 만들어서 깃에 멀쩡할때 소스코드를 올려백업하고싶은데,로드맵강좌중에 관련강좌가있을까요? 매회차 강의내용이 많은편이라, 강의가 한번 넘어갈때마다 코드내용이 두배이상 늘고,바뀌는거같아, 꼬이면,다시 처음부터 만듭니다ㅠ 5강까지 공부했다가,필요한 부분이 있어서 다시 첫강부터 하고있는데, 이젠 공부롤백때문에 다음강으로 넘어가기가 약간 두려워집니다. 만약 필요한 회차의 강의만 독립적으로 복습하고싶다면,가능할까요? 누적되는 내용들이 연결되있어서 지금은 불가능해보이긴 합니다.

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
eunjeong seo 댓글 2 좋아요 0 조회수 259

ConfirmTargetingAndContinue에서 브레이크가 걸립니다. [해결됨]

미해결

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

제목처럼 디버그 모드 실행시 여기 check문에 걸리는데요 코드를 비교해 봐도 어디가 문제인지 모르겠습니다..

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
k ch 댓글 2 좋아요 0 조회수 328

ai의 공격 애니메이션 rpc를 어떻게 해야할지 모르겠습니다

미해결

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

characternonplayer의 공격 애니메이션 rpc를 어떻게 해야할지 모르겠습니다 h: UFUNCTION(Server, Reliable) void ServerAttack(); UFUNCTION(Client, Unreliable) void ClientRPCAttack(); cpp: void ServerAttack_Implementation() { ProcessComboCommand(); ClientRPCAttack(); } void ClientRPCAttack_Implementation() { UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance(); AnimInstance->StopAllMontages(0.0f); AnimInstance->Montage_Play(ComboActionMontage); } 플레이어가 아닌 액터들의 rpc는 어떤식으로 진행해야하나요?

  • unreal-engine
  • 네트워크
  • 언리얼-c++
IIN 댓글 1 좋아요 0 조회수 276

ClassFinder 질문

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

ClassFinder 사용 중 궁금한 점이 생겼습니다. 경로를 지정할 때 클래스일 경우 _C를 마지막에 붙여야 하는 것으로 배웠고 잘 사용하고있었습니다 🙂 다만 갑자기 궁금한 점은 ABGameMode.cpp에선 DefaultPawnClassRef와 PlayerControllerClassRef의 경로엔 _C를 안붙여야 WorldSetting이 제대로 세팅 되는 것을 볼 수 있는데 위 상황 때문에, 어떠한 점을 기준으로, 클래스 레퍼런스 중에서도 경로에 _C를 붙여야할지 혹은 말아야할지 헷갈리게 되었습니다.. ㅠ

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
williamyjh0416 댓글 1 좋아요 0 조회수 251

Listen Server 실행 시 애니메이션 떨림 문제

해결됨

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

안녕하세요, 교수님. 교수님 강의를 듣고 포트폴리오를 한번 만들어보려고 하고 있습니다. 구현 중 애니메이션 관련 문제에 도달했는데요, Listen Server 실행 시, Server 측에서 'Client가 조종하는 Character의 애니메이션'을 관찰하면 해당 캐릭터 애니메이션이 미약한 떨림? 렉? 프레임저하? 가 발생하는 문제였습니다. 제 프로젝트의 문제인 줄 알았으나, 교수님의 part3 프로젝트에서도, Unreal 기본 템플릿(3인칭) 에서도 같은 문제가 발생하였고, 구글링을 해보았더니 엔진 상으로 알려진 문제인 것 같습니다. https://forums.unrealengine.com/t/clients-jitter-on-listen-server/343826?page=2 https://forums.unrealengine.com/t/listen-server-clients-animations-are-jittery-laggy/689493/15 구글링을 하여 찾아본 해결 방법으로는 애니메이션이 2배로 빨라지는 문제가 새로 발생하는 등, 확실하고 깔끔한 해결 방법이 없는 것 같습니다. 직접 해결해보려 엔진 코드를 열어보고 있지만 역시 너무나 어렵습니다.. 이런 경우에는 어떻게 해결해야 하나요 ... ?

  • unreal-engine
  • 네트워크
  • 언리얼-c++
상병 댓글 2 좋아요 0 조회수 502

Parallel 컴포짓의 태스크 실행 질문..

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

Main 인 Attack task 는 Inprogress 반환이라도 딱 한번만 호출되는데요. 같이 실행되는 TurnToTarget task는 Succeeded를 반환해도 매 프레임 여러 번 호출되는 것 같습니다. 여기서 어떤 규칙이 있는 건가요?? Parallel 컴포짓 이 main task가 inprogress 일 동안에는 매 프레임 sub task 의 ExecuteTask()를 호출 하는 방식인가요??

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
themoon007 댓글 1 좋아요 0 조회수 178

빌드 업로드 시

해결됨

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

안녕하세요 교수님 항상 양질의 강의에 감사드립니다 🙂 다름이 아니라 유니티 같은 경우 상업용으로 게임 제작 및 빌드 후 스팀에 배포 할 땐 DoNotShip 같은 폴더를 같이 업로드하면 안되는 걸로 알고있습니다. 혹시 언리얼도 위와 같이 스팀에 업로드할 때 같이 올리지 말아야할 폴더 혹은 파일들이 있을까요?

  • unreal-engine
  • 언리얼-c++
williamyjh0416 댓글 1 좋아요 0 조회수 397

private를 잘 안 쓰시는 이유?

해결됨

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

교수님 강의를 듣다 보니 private를 써도 되지 않나 싶은 곳에서도 전부 protected를 쓰시는 것을 보고 궁금증이 생겼습니다 예시로 4강에서 JumpAndWaitForLanding 클래스를 만들 때도 이 클래스는 제 생각에 더 파생되지 않을 것 같은데... 생각이 들었지만 protected를 사용하셨습니다 파생 클래스가 없다면 둘이 큰 차이는 없을 것 같다고 생각하지만 protected를 많이 사용하시는 이유와 스토리가 궁금합니다

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
1O1D 댓글 1 좋아요 0 조회수 329

37:24 오류질문드립니다

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

안녕하세요! 교수님! 강의 잘 듣고있습니다! 37:24까지 강의를 듣고 빌드 후 Ctrl+F5키를 눌러서 엔진 실행하기전에 이런 메세지가 나오며, 실제 게임 실행할때도 움직이지가 않습니다 ㅜ 저 경로에서 찾을수없는것같은데.. 어떻게 해결하면될까요..? 에디터 5.1버전이고 코드 똑같이 복붙해도 안됩니다..

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
댓글 2 좋아요 0 조회수 434

boolean 변수가 변경되는 이유를 모르겠습니다.

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

<#include "Item/ABItemBat.h" #include "Components/BoxComponent.h" #include "Components/StaticMeshComponent.h" #include "Particles/ParticleSystemComponent.h" #include "Physics/WMACollsion.h" #include "Interface/ABCharacterItemInterface.h" #include "Character/WMACharacterPlayer.h" #include <GameData/WMAGameInstance.h> #include "Blueprint/UserWidget.h" #include "Components/WidgetComponent.h" #include "UI/WMAItemInteractionWidget.h" #include "Interface/ABCharacterItemInterface.h" // Sets default values AABItemBat::AABItemBat() { Trigger = CreateDefaultSubobject<UBoxComponent>(TEXT("TriggerBox")); Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh")); Effect = CreateDefaultSubobject < UParticleSystemComponent>(TEXT("Effect")); TextE = CreateDefaultSubobject<UWidgetComponent>(TEXT("TextE")); Item = CreateDefaultSubobject<UABItemData>(TEXT("ItemBat")); static ConstructorHelpers::FClassFinder<UUserWidget>InputE(TEXT("WidgetBlueprint'/Game/UI/WBP_ItemInteraction.WBP_ItemInteraction_C'")); if (InputE.Succeeded()) { InteractionItemWidgetClass = InputE.Class; } RootComponent = Trigger; Mesh->SetupAttachment(Trigger); Effect->SetupAttachment(Trigger); Trigger->SetCollisionProfileName(CPROFILE_WMATRIGGER); Trigger->SetBoxExtent(FVector(11.0f, 10.0f, 110.0f)); Trigger->OnComponentBeginOverlap.AddDynamic(this, &AABItemBat::OnOverlapBegin); Trigger->OnComponentEndOverlap.AddDynamic(this,&AABItemBat::OnOverlapEnd); static ConstructorHelpers::FObjectFinder<UStaticMesh> BoxMeshRef(TEXT("/Script/Engine.StaticMesh'/Game/Item/Bat/Batfbx.Batfbx'")); if (BoxMeshRef.Succeeded()) { TempBoxMesh = BoxMeshRef.Object; Mesh->SetStaticMesh(BoxMeshRef.Object); } Mesh->SetRelativeLocation(FVector(0.0f, -3.5f, -20.0f)); Mesh->SetCollisionProfileName(TEXT("NoCollision")); bInteractionItem = false; PrimaryActorTick.bCanEverTick = true; } void AABItemBat::Tick(float DeltaTime) { Super::Tick(DeltaTime); //UE_LOG(LogTemp, Warning, TEXT("Character is Die :: %s"), bInteractionItem ? TEXT("true") : TEXT("false")); if (bInteractionItem) { Trigger->OnComponentBeginOverlap.AddDynamic(this, &AABItemBat::OnOverlapBegin); UE_LOG(LogTemp,Warning,TEXT("NO item Attach")) } } void AABItemBat::OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepHitResult) { //TextE->SetHiddenInGame(false); if (InteractionItemWidgetClass) { ItemText = CreateWidget<UUserWidget>(GetWorld(), InteractionItemWidgetClass); if(ItemText) ItemText->AddToViewport(); } if (nullptr == Item) { Destroy(); return; } //UE_LOG(LogTemp, Warning, TEXT("Character is Die :: %s"), bInteractionItem ? TEXT("true") : TEXT("false")); if (bInteractionItem) { IABCharacterItemInterface* OverlappingPawn = Cast<IABCharacterItemInterface>(OtherActor); if (OverlappingPawn) { OverlappingPawn->TakeItem(Item); //TextE->SetHiddenInGame(true); } //Effect->Activate(true); Mesh->SetHiddenInGame(true); SetActorEnableCollision(false); Effect->OnSystemFinished.AddDynamic(this, &AABItemBat::OnEffectFinished); Trigger->OnComponentBeginOverlap.RemoveDynamic(this, &AABItemBat::OnOverlapBegin); } } void AABItemBat::OnOverlapEnd(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) { if (ItemText) { ItemText->RemoveFromViewport(); ItemText = nullptr; } } void AABItemBat::OnEffectFinished(UParticleSystemComponent* ParticleSystem) { Destroy(); } void AABItemBat::StartInteractionItem() { bInteractionItem = true; } void AABItemBat::StopInteractionItem() { //bInteractionItem = false; }> 일단 WMACharacterplayer.cpp에서 StartInteractionItem()을 호출하는데는 문제가 없습니다. StartInteractionItem() 함수 내부에서 로그를 출력해보면 bInteractionItem이 true로 잘 출력이 되는 것을 확인할 수 있습니다. 문제는 Tick함수 내부와 OnOverlapBegin()함수 내부에서 로그를 찍어보면 bInteractionItem이 false로 변경되어서 OnOverlapBegin()함수를 호출하지 못하고 있는 상황입니다. 혹시 어느 부분이 문제가 되어 bool값이 변경되는지 여쭐수 있을까요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
이권용 댓글 1 좋아요 0 조회수 788

UPROPERTY로 선언되지 않은 언리얼 오브젝트에 대한 궁금증이 있습니다

미해결

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

애초에 언리얼 오브젝트가 UPROPERTY 로 선언이 되지 않았다는 것은, 가비지 컬렉터에 의해 관리되지 않고 있다는 것으로 이해했습니다. 그리고 유효하지 않다는 것의 의미 또한 언리얼 오브젝트가 가비지 컬렉션에 의해 관리되지 않고 있다는 것으로 이해했습니다. 그렇다면 NonPropStudent 는 시작부터 "유효하지 않은 언리얼 오브젝트"여야 하지 않나요? 왜 3초가 지나기 전에 Shutdown을 시키면 UPROPERTY 로 선언되지 않은 오브젝트 객체인 NonPropStudent 가 "유효한 언리얼 오브젝트"라고 로그가 뜨는 건가요? 언리얼 오브젝트가 가비지 컬렉터에 의해 회수가 되는 것과 애초에 가비지 컬렉터에 의해서 관리되지 않는 것은 다른 의미 아닌가요?

  • unreal-engine
  • 언리얼-c++
왕만두 댓글 2 좋아요 1 조회수 365

첫 검증테스트에선.

미해결

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

포인터의 값이 nullptr인지로는 가리키는 객체가 있는지 판별이 부정확하다는것과, 유효하기위해선 UPROPERTY매크로를 사용해야한다는것. //정확한 결과를 보기위해선.. if (NonPropStudent->IsValidLowLevel()) { UE_LOG(LogTemp, Log, TEXT("[NonPropStudent] 유효한 언리얼 오브젝트")); } else { UE_LOG(LogTemp, Log, TEXT("[NonPropStudent] 널 포인터")); } if (PropStudent->IsValidLowLevel()) { UE_LOG(LogTemp, Log, TEXT("[PropStudent] 유효한 언리얼 오브젝트")); } else { UE_LOG(LogTemp, Log, TEXT("[PropStudent] 널 포인터")); } //결과로그 LogTemp: [NonPropStudent] 널 포인터 LogTemp: [PropStudent] 유효한 언리얼 오브젝트 이렇다는 말씀이죠?

  • unreal-engine
  • 언리얼-c++
eunjeong seo 댓글 2 좋아요 0 조회수 299

46분에 커스텀 구조체에 대한 GetTypeHash()에 대한 질문이 있습니다.

미해결

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

GetTypeHash() 는 FStudentData 구조체를 입력으로 받아서 해당 구조체의 Order 멤버 변수를 기반으로 해시 값을 생성한다고 이해하면 되나요? 즉, return GetTypeHash(InStudentData.Order); 이 부분은 FStudentData 의 구조체의 Order 멤버 변수를 입력으로 받아서 해당 값을 해싱한 결과를 반환하는 것이라고 이해하면 될까요? 또한, TSet 에 저장된 FStudentData 객체의 멤버변수 Name 은 중복이 될 수 있지만, Order 는 중복이 될 수 없는 거로 이해했는데 잘 이해한 건가요?

  • unreal-engine
  • 언리얼-c++
왕만두 댓글 2 좋아요 2 조회수 341

npc와 player 에셋을 다른 것을 사용하는 경우

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

강의 시에는 npc와 플레이어가 같은 에셋을 사용해서 mesh등의 reference들을 사용할때 base에서 한번에 처리하는 식으로 되어있는데 만약 캐릭터 asset과 몬스터 asset이 다른 경우에는 base의 생성자에서 처리하는게 아닌 각각의 npc와 player의 코드에서 에셋 경로를 입력해 주어야하나요? 또 공격판정시에 플레이어가 총을 쏘고 몬스터는 근접공격을 한다할때 이 또한 둘의 판정을 각각의 코드에서 적어주는게 맞는건가요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
junhwan5245 댓글 1 좋아요 0 조회수 261

Trace Store 에 아무것도 안 뜹니다.

미해결

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

배치 파일로 에디터를 열고, unrealinsight 실행하여 connect 해 준 다음 Trace store 를 열면 아무것도 뜨지 않고 비어있습니다. 어떻게 해야 할까요?

  • unreal-engine
  • 네트워크
  • 언리얼-c++
차태관 댓글 1 좋아요 0 조회수 296

선생님 강의 늘 잘보고 있습니다 문제가 좀 있는데요

미해결

[입문자를 위한 UE5] Part4. 언리얼 엔진 C++

C++클래스를 생성할 때 하위폴더를 만들어 생성하면 그 위치의 헤더파일을 인식을 하질 못합니다 분명 경로에 있고 VS상에도 필터구조 아래에 잘 들어가 있는데 인식을 못하는 문제가 있는데 VS를 지웠다 깔아도 마찬가지입니다 이런 경우 해결방법이 있을까요? -> 선생님 이문제는 강의 듣다보니 바로 나왔네요 해당 하위폴더를 지우고 막바로 헤더를 인클루드 하니 해결되었습니다 -> 인클루드 하니 비주얼스튜디오 상에선 해결이 되었는데 언리얼 에디터 상에서 폴더구조가 반영이 안됩니다 혹시 이경우는 어떻게 하면 좋을까요? 또 저같은 경우 라이브코딩이 켜져있으면 빌드할 때 에러가 납니다 선생님은 같은 증상이 없으신지요?

  • unreal-engine
  • 언리얼-c++
티밍 댓글 1 좋아요 0 조회수 521

파트4의 서버 파일이랑 다른건가요??

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동

파트4에서 서버 프레임워크 강의를 보고 파트5로 넘어왔습니다. 그런데 중간중간 서버 프레임워크 소스가 다른곳이 있는거 같은데요, 예를 들어 서버에서 사용중인 패킷핸들러 cpp에서 인클루드되어있는 파일이 현재 파트5 강의에서는 BufferReader.h와 BufferWrite.h를 포함하고있습니다. 파트4 기준으로 해당 헤더는 포함되어있지 않구요. 그리고 패킷 핸들러.h 에서는 현재 파트5에서는 MakeShared하는 부분을 언리얼과 구분 지어서 MakeShared, make_share로 강의를 해주셨는데, 애초에 파트4의 핸들러에서는 make_shared를 사용하지 않고 SendBufferPtr sendBuffer = GSendBufferManager->Open( packetSize ); 소스를 이용중인것으로 보이는데요.. 혹시 제가 중간에 잘못본 강의가 있는걸까요?

  • c++
  • unreal-engine
  • windows-server
a51681767 댓글 1 좋아요 0 조회수 456

인기 태그

인프런 TOP Writers

주간 인기글