22,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결언리얼 엔진4 입문 (C++ 기반)
UE5 generated.h 파일 생성이 안돼요
UE5로 진행하는 학생입니다.강사님 영상에는 액터 클래스 추가하셨을 때 별도의 .generated.h 생성은 없었는데 제가 클래스 추가하면 generated.h를 찾을 수 없다고 하더라고요.. 실제로 생성되지도 않구요. 그래서 어떻게 해야할지 질문드려요
- 미해결언리얼 엔진4 입문 (C++ 기반)
애니메이션 블루프린트 오류
cpp를 상속받은 애니메이션블루프린트를 만들고 프로젝트 끄기 전까지는 되는데끄고나서 다시 키려면 항상 이 오류가 뜨는데 왜일까요,,,?
- 미해결언리얼 엔진4 입문 (C++ 기반)
생성자 ConstructorHelpers질문 있습니다.
APerson::APerson(){PrimaryActorTick.bCanEverTick = true; Body = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BODY"));RootComponent = Body;static ConstructorHelpers::FObjectFinder<UStaticMesh> BODY(TEXT("StaticMesh'/경로 어쩌구'")); if (BODY.Succeeded()) { Body->SetStaticMesh(SM_BODY.Object); }} 이렇게 Person이라는 c++클래스의 생성자에서 FObjectFinder할 때 제일앞에 static을 붙이는데 이게 구글링을 해보니까 경로는 변경될일이 없기 때문에 게임에서 생성자 코드가 여러번 호출 될 때마다 지역변수를 생성하고 초기화 하는 것은 불필요한 작업이라서 static을 붙인다던데... Person이라는 객체가 월드에 동적으로 배치가 된다면 어쨋든 생성자를 호출하기때문에 변경될일이 없더라도 지역변수를 호출하는거 아닌가요...??static 키워드가 붙은 변수는 생성자에서 초기화를 못한다고 알고있습니다.. 왜냐하면 같은 이름의 변수가 계속 데이터 영역에 올라가면 링킹 문제가 발생한다고 알고있어서...(정확하지는 않지만 그냥 같은 이름의 변수를 계속 데이터 영역에 올리면 안된다라는 느낌을 강하게 받습니다) 그런데 만약 Person이라는 c++객체를 동적으로 계속 월드에 배치를 한다면 생성자도 호출이 되는 것일텐데 그때마다 static이 붙은 static ConstructorHelpers::FObjectFinder<UStaticMesh> BODY(TEXT("StaticMesh'/경로 어쩌구'"));이부분이 계속 호출 되면 에러가 나야 정상아닌가요..?? 잘 모르겠습니다..ㅠ
- 미해결언리얼 엔진4 입문 (C++ 기반)
24분쯤에 UE시리즈
유니티 수업을 들었던 학생입니다. 언리얼 프로젝트도 유니티처럼 프레임워크를 쌓아 올리면서 강의를 진행한다고 하셨는데 어떤 강의에서부터 프레임워크 쌓아 올리는 강의가 있나요???
- 미해결언리얼 엔진4 입문 (C++ 기반)
Weak_ptr질문
30분쯤 Weak_Ptr 언리얼버젼 TWeakObjectPtr질문입니다. 순환 구조? 가 발생할 수 있어서 weak_ptr을 사용하신건가요?MyCharacter에서 컴포넌트들은 그냥 쌩포인터에 UPROPERTY만 붙여서 사용하셨는데 이게 언리얼 버젼의 스마트 포인터를 사용하는것과 차이가 있어서 그런것인가요??(썡포인터 위에 UPROPERY매크로를 붙인것과 언리얼 버젼 스마트 포인터의 차이점을 모르겠습니다)MyCharacterWidget에서는 왜 쌩포인터 위에 UPROPERTY메크로를 사용을 안하고 스마트 포인터를 사용하는 것인가요??어느부분에서 순환구조가 발생할 거 같아서 shared_ptr대신 weak_ptr을 사용하신 건가요??)
- 미해결언리얼 엔진4 입문 (C++ 기반)
13분 질문
갑자기 기초 문법이 조금 햇갈려서 질문 남깁니다..ㅠ static ConstructorHelpers::FClassFinder<UUserWidget> UW(TEXT("WidgetBlueprint'/Game/UI/WBP_HpBar.WBP_HpBar_C'")); 여기서에서 static은 한정자이고 ConstructorHelpers::FClassFinder<UUserWidget> 는 UW라는 이름을 가지는 객체의 자료형을 의미를 하고UW는 일반 변수명이 아니라 TEXT("WidgetBlueprint'/Game/UI/WBP_HpBar.WBP_HpBar_C'"));라는 인자를 받는 생성자를 통해서 생성된 "객체"를 말하는 것인가요?
- 미해결언리얼 엔진4 입문 (C++ 기반)
UE_LOG에 빨간색 밑줄이 쳐집니다.
디버깅 실습을 위해 똑같이 따라했지만 ㅠ UE_LOG에 빨간색 밑줄이 쳐지고 컴파일에 실패했습니다.. 어떻게 하면 문제를 해결할 수 있을지 여쭤보고 싶습니다..!
- 미해결언리얼 엔진4 입문 (C++ 기반)
Mesh와 MESH
안녕하세요~! 강좌에서 .h에는 Mesh라고 적고, .cpp에서는 MESH라고 적는 걸로 익혔습니다. 궁금해서 .cpp의 MESH를 MESHesgone으로 바꿔보았는데 에디터에서 해당 컴포넌트가 적용되지 않은 것으로 보였습니다. 제가 전공이 전혀 무관한 사람이라 너무 기본적인 의문을 가지는 것 같은데 왜 그런 것인지 알려주신다면 저에게 도움이 많이 될 것 같습니다. 감사합니다.
- 미해결언리얼 엔진4 입문 (C++ 기반)
template UCLASS 관련 질문 드립니다.
안녕하세요. 질문에 앞서, 항상 좋은 강의를 제공해주셔서 감사합니다.알려주신 강의를 바탕으로 추가적인 공부를 진행하던 중, 해결하지 못하는 점이 생겨서이렇게 글을 남깁니다. UCLASS를 만드는데 template을 사용할 경우 문제가 발생합니다.포럼 등에 찾아보니 여러 이유로 template 기능이 지원되지 않는 것 같은데이런 경우 template을 사용하지 못하게 되면 여러 자료형에 대해 모두 코드를 짜주어야 하나요? 현재 제가 하고자 하는 건 퀘스트와 관련된 내용인데,예를 들면 몬스터 사냥 퀘스트의 경우, 해당 몬스터를 죽였을 때 해당 퀘스트의 잡은 몹 수를 늘려야하는데, 해당하는 타입의 몬스터를 사냥 했는지를 판단하는 코드를 template으로 짜려고 했습니다. 간단히 아래 코드와 같습니다. (UKillEnemyQuest나 UQuestInterface는 제가 작성한 클래스입니다)template<typename EnemyType> UCLASS() class PORTFOLIO1_API UKillEnemyQuest: public UQuestInterface { GENERATED_BODY() ... }==============================================template<typename EnemyType> void UKillEnemyQuest<EnemyType>::ProcessQuest(UObject* KilledObject) { auto KilledEnemy = Cast<EnemyType>(KilledObject); if (IsValid(KilledEnemy)) { // 몬스터를 죽였을 때 퀘스트 내부에서 수정되는 로직 } }위와 같이 구성하여 늑대를 잡는 퀘스트의 경우 UKillEnemyQuest<Wolf>,고블린을 잡는 퀘스트의 경우 UKillEnemyQuest<Goblin>이런 식으로 짜고 싶었습니다.. 이런 경우 각 몬스터에 해당하는 Quest 클래스들을 일일히 다 작성해주어야 할까요..?다른 방법이 있는지 궁금하여 질문 남깁니다ㅠㅠ
- 미해결언리얼 엔진4 입문 (C++ 기반)
생포인터 사용
안녕하세요 강사님 이거 하도하도 물어본다 해놓고 까먹어서 여기서 물어보게 되네요. 강의를 들으면서 가급적이면 생포인트를 사용하는 것을 지양하라고 하셨는데 어느 강의에서 강사님이 게임서버 회사에 일을 하는데 갑자기 서버가 크래쉬가 나서 원인을 찾으려해도 못찾아 결국은 신입이 많이 들어와서 그런거라 판별을 했지만, 알고보니 옛날에 작업하던 사람이 생포인터를 쓰고 신경을 쓰지 않아 문제가 생겼던 거라 기억을 합니다. 이런 얘기를 하시면서 지뢰를 설치하는 사람은 따로 있고 밟는 사람 따로 있다. 라고 하셨는데 결론은 결국 MMO RPG개발로 넘어가면 결국 생 포인터를 쓸 수 밖에 없는 상황이 오나요?
- 미해결언리얼 엔진4 입문 (C++ 기반)
TWeakObjectPtr
안녕하세요제가 루키스님의 강의가 이번이 처음이라 늘 말씀해주셨다는 WeakPtr의 개념이 많이 부족한거같습니다.30:00 내용입니다.1.UMyStatComponent를 쌩포인터로 변수를 가질 경우의 문제점을 알고싶습니다.2.Character에서는 UMyStatComponent를 쌩포인터로 변수를 갖고있는데 이 경우는 CreateDefaultSubobject를 해주기에 문제가 없는걸까요?3.굳이 생성자나 Begin()말고 왜 PostInitializeComponent()를 사용하는지 어떨 때 사용하는지 궁금합니다. 4.번외 질문으로써 사용하고 계신 Visual Assist가 어떤건지 궁금합니다 혹여나 저도 구매를 하여 사용할 경우, 회사 입사시 회사내의 개발규칙과는 상관이없는지도 궁금합니다.(사용하면 안된다거나, 회사내 자체적으로 사용하는 Assist가 있는지)답변주시면 감사드리겠습니다.
- 미해결언리얼 엔진4 입문 (C++ 기반)
LOG출력 컴파일은 되는데 플레이시 Error가 발생하며 튕깁니다.
스탯 매니저 강의 중 13:50초 즈음에해당 로그를 추가하고 Game Instance까지 설정했는데컴파일이 완료 돼도 플레이 시 오류가 발생합니다Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x000000000000000c이유에 대해 알려주시면 감사드리겠습니다.
- 미해결언리얼 엔진4 입문 (C++ 기반)
postinitializecomponents
애니메이션 Atack함수 실행간 오류가 있어서 분석해본봐 postinitializecomponents 함수를 호출하지 못하고 있는듯합니다. 해당합수에 Log를 출력하기 위해 작성해 두었으나 해당 로그가 출력되지 않습니다. 해당 postinitializecomponents 함수에서 animationmotage를 받아오기위한 코드가 들어있는데 해당 함수가 실행되지 않아Attack 함수 내부에 문제가 생긴걸로 파악되었습니다.혹시 어떤 조치를 하면 될지 알 수있을가요?
- 미해결언리얼 엔진4 입문 (C++ 기반)
[스탯매니저] 공격하는 캐릭터 정보인지, 공격당하는 캐릭터 정보인지 헷갈려요.
스탯매니저 강의에서 질문을 드려요.UE_LOG(LogTemp, Log, TEXT("Hit Actor : %s"), *HitResult.Actor->GetName());위의 로그에서, HitResult.Actor를 어떤 걸로 찍는지 확인했더니, BP_MyCharacter_2였고, 언리얼에서 확인해보니, 이 라벨은 때리는 캐릭터가 아니라 공격당하는 캐릭터인데 제가 제대로 이해한 게 맞는지 모르겠어요.HitResult.Actor->TakeDamage(Stat->GetAttack(), DamageEvent, GetController(), this);에서, 첫번째 매개변수가 의미하는 게 DamageAmount인데, 여기에서 Stat이 의미하는 게 공격하는 캐릭터의 Stat인가요? 그래야 Stat->GetAttack()을 했을 때 DamageAmount가 나올 것 같아서요.위에 따라서 TakeDamage 함수가 호출될텐데,float AMyCharacter::TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser){Stat->OnAttacked(DamageAmount);return DamageAmount;}위에서 정의한 함수에 의하면 Stat의 OnAttacked가 호출되는데, 이때의 Stat은 공격당하는 캐릭터의 Stat이 맞나요?같은 MyCharacter.cpp 파일 내에서 어떤 순간에는 Stat이 공격하는 캐릭터의 Stat이고, 어떤 순간에는 Stat이 공격당하는 캐릭터의 Stat으로 해석이 되어서 헷갈려요.
- 미해결언리얼 엔진4 입문 (C++ 기반)
ue4 -> ue5 코드 변경
8:30 분에 있는 ue4버전 UBlacboardComponent* Blackboard; ue5버전에서는 TObjectPtr<UBlackboardComponent> Blackboard; 로 변경되어있는데 .. UBlackBoardComponent*& 인자가 필요한거잖아요? 문서 찾아보는 능력도 부족하고, AIController.h 메소드를 찾아봐도 반환값 UBlackboardComponent*를 찾을 수가 없어서 질문드립니다
- 해결됨언리얼 엔진4 입문 (C++ 기반)
애니메이션 기초 강의 질문입니다.
애니메이션 강의에 다운로드 받을수 있는 예제 파일을 다운받아서 따라서 해보던중 이미 MyAnimInstace라는 C++파일이 만들어져있어서 MyAnimInstance1이라는 네이밍으로 새로 만들어서 예제를 실행하고 있었습니다. 궁금한 점은 MyAnimInstance.h에서 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Pawn, Meta=(AllowPrivateAccess=true)) float Speed; UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Faling, Meta = (AllowPrivateAccess = true)) bool IsFall; 이렇게 작성을 하였고 카테고리 및 변수 이름이 위에 처럼 바꼈습니다. 그런데 BP_MyCharacter 에서 Mesh를 클릭한후 Animation에서 Anim Class를 ABP_MyAnim1_C로 변경을 했는데 카테고리로 지정한 네임은 그대로 이고 MyAnimInstance1.cpp에 점프를 구현해놓고 MyAnimInstance.cpp에는 점프를 구현 안해놨는데 점프는 1에 있는 cpp파일로 실행되고 있는거 같습니다. 왜 이렇게 실행되는지가 궁금합니다.
- 미해결언리얼 엔진4 입문 (C++ 기반)
OnAttacked(float DamageAmount) 함수 질문
영상 23분 36초에 나오는 MyStatComponent.cpp의 OnAttacked(float DamageAmount) 함수에서 DamageAmount 변수는 따로 10이라고 설정해준 적이 없는데 기능 구현되는 것을 보면 10씩 깎이더라구요. 이건 왜 이렇게 되는지 알 수 있을까요?
- 미해결언리얼 엔진4 입문 (C++ 기반)
소켓 실습 일부 오버랩으로 검이 주워지지 않습니다
소켓 실습 강의 부분에서 , 검이 주워지지 않았습니다. 로그를 일일히 찍어본 결과 PostInitializeComponents()에 Trigger->OnComponentBeginOverlap.AddDynamic(this, &AMyWeapon::OnCharacterOverlap); 부분이 실행되지 않았습니다 혹시나 하는 마음에 프로젝트 세팅-> 콜리전 에 있는 Preset MyCollectible을 MyCharater만 오버랩이 아닌 , 전부 오버랩으로 바꿔봤더니 검이 주워졌습니다. 어떤 부분에서 오류의 가능성이 있는걸까요? Trigger->SetCollisionProfileName(TEXT("MyCollectible")); 는 철자오류없이 작성했고 검 콜리전 프리셋도 MyCollectible로 되어있는 것을 확인했습니다 오류의 가능성 제시해주시면 잘 찾아보겠습니다 감사합니다
- 미해결언리얼 엔진4 입문 (C++ 기반)
인텔리젼스? 비츄얼어시스트? 질문입니다
24분45초에 IsValid() 라는걸 타이핑 치실때 자동으로 비츄얼 어시스트가 인텔리젼스 기능을 지원해주는데 저는 델리게이트도 그렇고 자동으로 자꾸 지원을 안해줍니다 혹시 설정을 어떻게 하셨는지 알수 있을까 하여 여기 남겨봅니다
- 미해결언리얼 엔진4 입문 (C++ 기반)
RootComponent에 무언가 할당을 해줘야 하지 않나요?
Weapon->SetupAttachment(RootComponent);를 해주는데, RootComponent에 뭔가를 대입을 해주고,그다음에 저 문장을 써야하는거 아닌가요?