inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

스태틱메시 Copy Reference할 때 '를 삭제하지 않는 이유

미해결

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

안녕하세요. Fountain 스태틱 메시를 Copy Reference해서 붙여넣을때 왜 저번과 다르게 '를 빼지않고 그대로 사용하나요? 추가로 비주얼 스튜디오에서 ctrl F5로 언리얼이 실행이 안되고 디버그 설정을 하라는 오류가 발생할 땐 어떻게 해야하나요?

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

5.3 이후 버전 쓰시는 분들은 Granted Tags가 안나올때 해결방법

미해결

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

질문&답변 게시판에 이러한 글을 작성해서 죄송합니다. 저는 5.5버전으로 공부중인데 강의 중 39분 쯤에 Granted Tags에 태그 추가하는 부분이 있었는데 5.3버전 이후부터는 없어가지고 저가 찾은 방법을 나중에 저 처럼 공부하시는 분들이 해당 부분에 막힐까봐 여기서나마 적고싶었습니다. 문제가 된다면 해당 글을 삭제하겠습니다. 5.3 이후 버전에서는 Tags가 Components에 통합되면서 Component를 이용해서 추가해야합니다. 5.3버전일 경우 Components - " Target Tags Gameplay Effect Component"를 추가해서 tag를 넣으시면 되고 5.4,5.5버전일 경우 Components - "Grant Tags to Target Actor"를 추가해서 tag를 넣으시면 됩니다.

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
김근우 댓글 2 좋아요 2 조회수 408

GrabComponent 강의에서

미해결

[입문자를 위한 UE5] Part5. 언리얼 엔진 VR

SphereTraceForObjects-OutHitReturnValue랑 BreakeHitResult랑 노드 연결이 안됩니다.... 정확히 일치되는 구조체만 호환 간주됩니다 파생구조체는 허용되지 않습니다 라는 알람이 뜨네요 Get Component By Class - Return Value 노드랑 로컬변수 LocalGrabComponent도 연결이 안됩니다.... LocalGrabComponenet랑 ReturnNode-NewParam도 저는 연결이 안됩니다..(영상 22:00 참조)

  • unreal-engine
  • ue-blueprint
  • VR/AR
q2go14d8 댓글 1 좋아요 0 조회수 99

Git에서 다운받은 파일중 일부가 에디터에서 인식되지 않습니다.

미해결

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

안녕하세요. 저번 강의에서 Git에서 다운받은 ArenaBattle폴더를 새로 만든 프로젝트의 Content폴더로 옮겨 주었을 때, 에디터에서 인식은 했으나 폴더에는 존재하는 Step1이 에디터에서는 나타나지 않는 현상이 있었습니다. 이번 강의에서도 진행도중 BluePrint에서 일부 엑터만 에디터에 표시됩니다. 무슨 문제가 있는것인가요?? 현재 언리얼 버전은 5.1 사용중입니다!

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

움직임 리플리케이션 질문

미해결

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

안녕하세요 저는 데디케이티드 서버 환경으로 공부를 진행하고 있습니다. 강의를 통해 움직임 리플리케이션을 공부하다가 궁금한점이 생겨 글을 남깁니다. 현재 제가 이해하고 있는 움직임 리플리케이션의 간단한 플로우는 아래와 같습니다. 1. 클라가 이동하고자 하는 좌표를 누르면 해당 방향으로 클라가 이동한다 2. 이 과정에서 매 틱마다 클라가 움직인 변화값이 하나의 데이터화 되어 RPC를 호출해 서버에 움직인 값을 전달한다 3. 서버는 클라가 움직인 변화값을 기반으로 서버에서 시뮬레이션을 진행한다 4. 서버와 클라의 위치에 별다른 오차범위, 특이 사항이 없다면 그대로 승인 RPC를 호출하고 5. 만약 서버와 클라간에 오차가 발생하면 해당 부분을 보정하여 클라에게 수정을 요청하는 RPC를 호출한다 6. 클라는 서버가 수정 값을 보내줬다면 보정된 위치로 이동한다 (오차 범위에 대한 동기화) 이 내용을 기반으로 질문드리고 싶은 내용은 아래와 같습니다. 그렇다면 캐릭터를 움직이는 로직을 구현할 때, 서버와 클라이언트의 코드를 분리해서 서버와 클라가 Tick부분에서 같이 움직이는 방식은 비효율적인가요? 예를 들어서 클라이언트가 이동하고자 하는 목적지를 클릭했다면, 그 목적지 좌표를 Server RPC를 호출하여 리플리케이트하고 Tick() 부분에서 클라액터도 움직이고 서버 액터도 같이 움직이게 하는 방식같은 케이스입니다.. 이 방식을 생각했던 이유는 캐릭터가 목적지로 이동하고 있을때 클라이언트 쪽에서 렉이 걸려서 잠깐 멈췄다가 접속해도 클라이언트의 캐릭터는 계속 목적지를 향해서 달리고 있는 상황을 재현하고 싶어서였습니다. 서버와 클라이언트가 둘 다 목적지를 알고 있고, 그 목적지로 Tick 에서 같이 이동하는 방식이면, 네트워크 연결이 원활할 경우엔 기존 리플리케이트 플로우처럼 서버는 클라의 움직임을 검증하고 승인할 것이며, 오차범위가 발생할 경우 서버가 목적지까지 움직이고 있었으니 서버의 위치로 클라를 동기화할 수 있기 때문입니다. 더불어 서버는 클라이언트가 어떠한 이동의 변화값을 보낼지 짐작할 수 없으며, 최악의 경우에는 클라이언트가 악의적으로 잘못된 이동값을 전달할수도 있다는 걱정도 이 이유에 포함됩니다. 하지만 이러한 생각을 기반으로 HasAuthority() 함수를 이용해 코드를 분리해서 구현해보니 서버에서 이동한 위치는 결국 다시 클라에 RPC를 해줘야하고, 클라에서 AddMovementInput 으로 움직인 값은 서버에 자동으로 RPC되고.... 뭔가 이중 RPC를 하는 느낌이 들더라구요.. 제가 너무 깊게 생각한건가 싶기도 하고... 제가 이해를 잘못해서 오히려 생각을 이상하게 해버린건지, 아니면 접근 방식이 잘못된건지 개인적인 선생님의 의견을 들어보고 싶습니다.

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

콤보 어택

미해결

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

수업시간에 배운걸 토대로 콤보 어택마다 데미지를 다르게 구현하고 싶어서 코드를 작성하고 있습니다. float AOLCharacterBase::TakeDamage(float DamageAmount, struct FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) { if (CurrentComboAttack == 1) { Hp = FMath::Clamp(Hp - DamageAmount, 0.0f, MaxHp); // 체력 업데이트 UE_LOG(LogTemp, Warning, TEXT("Damage1 = %f"), DamageAmount); } else if (CurrentComboAttack == 2) { Hp = FMath::Clamp(Hp - DamageAmount*2, 0.0f, MaxHp); // 체력 업데이트 UE_LOG(LogTemp, Warning, TEXT("Damage2 = %f"), DamageAmount*2); } else if (CurrentComboAttack == 3) { Hp = FMath::Clamp(Hp - DamageAmount * 3, 0.0f, MaxHp); // 체력 업데이트 UE_LOG(LogTemp, Warning, TEXT("Damage3 = %f"), DamageAmount * 3); } UE_LOG(LogTemp, Warning, TEXT("Hp = %f"), Hp); // 체력이 0 이하인 경우 if (Hp <= 0.0f) { Dead(); // 죽었으니 함수 호출 UE_LOG(LogTemp, Error, TEXT("Dead!")); } return DamageAmount; } TakeDamage에서 CurrentComboAttack 값에 따라 데미지를 다르게 하려고 위 코드와 같이 작성을 했는데 로그도 전혀 나오지 않습니다. 콤보 어택 데이터에 데미지 값을 추가하여 값을 가져오면 콤보마다 데미지가 다른게 잘 되는데, 위 코드와 같이 작성하면 왜 안되는지 궁금합니다.. CurrentComboAttack은 전역변수로 선언되어있습니다.

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

언리얼 시스템의 에러? 에 대해서 질문 드립니다.

미해결

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

#include "UObject/UObjectGlobals.h" 위의 include 문을 R1PlayerController.h 에 입력하고 나니 문제가 모두 해결되었고, 이후로는 이 include문 없이도 오류가 발생하지 않습니다. 다시 확인해보니 아래의 문제들은 UnrealHeaderTool command completed.가 되기 전에 발생하던 문제였습니다. 컴파일러 설정은 Development Editor Win64 시작 프로젝트 -> R1 프로젝트 입니다. 환경은 언리얼 엔진은 5.5.1 vs는 17.13.1 윈도우 11 입니다. R1.Build.cs 파일에 { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput" } 모듈들을 의존하도록 설정했습니다. APlayerController를 상속받은 AR1PlayerController를 작성할 때 문제가 발생했었습니다. 우선 헤더에선 GENERATED_BODY() 가 작성된 줄에서 오류가 발생했었습니다. (E0077 : 이 선언은 스토리지 클래스나 타입 지정자가 없습니다.) 그리고 cpp 파일에서 여러 오류가 존재했었습니다. AR1PlayerController의 생성자를 작성할 때 생성자 초기자 에서 자신의 자신의 부모 클래스의 생성자를 호출하는 부분에서 오류가 발생했었습니다. : Super(ObjectInitializer) (E0293 : 직접적이지 않은 논버추얼 클래스는 허용되지 않습니다.) AR1PlayerController::SetupInputComponent() 함수의 구현부에서 Super::SetupInputComponent() 에서 오류가 발생했었습니다. (오류의 내용은 Super에 SetupInputComponent()라는 멤버가 존재하지 않는다는 오류였습니다.) 그리고 EnhancedInputComponent->BindAction()를 호출할 때 &ThisClass::(연동할 함수 이름) 에서 오류가 발생했었습니다. (오류의 내용은 ThisClass에 (연동할 함수 이름)가 존재하지 않다는 내용이었습니다.) 코드를 한 줄씩 시험해보니 FObjectInitializer를 매개변수로 받는 R1PlayerController의 생성자가 있으니 오류가 발생한다는 것을 알았고, 생성자를 지우니 정상적으로 빌드가 되었습니다. 이어서 매개변수를 받지 않는 생성자만 작성한 경우에도 오류가 발생하지 않았습니다. FObjectInitializer 가 존재하는 헤더 파일인 "UObject/UObjectGlobals.h"를 include 하니 FObjectInitializer를 매개변수로 받는 생성자를 작성해도 빌드가 통과되었고 이후론 해당 include문을 지워도 빌드가 통과됩니다. .vs, Binaries, DerivedDataCache, Intermediate, Saved 폴더들을 삭제하고 .uproject 의 Generate~를 실행한 뒤 빌드 해도 문제가 발생하지 않았습니다. 제가 느끼기에는 뭔가 컴퓨터한테 "UObject/UObjectGlobals.h" 도 있으니 이것도 사용해보라고 알려주니 컴퓨터도 다음부턴 알아서 잘 이용한다는 느낌이 듭니다.

  • unreal-engine
  • 언리얼-c++
이정환 댓글 1 좋아요 0 조회수 387

SetWaitingOnAvatar함수의 호출 위치에 따라 영향을 주는지 궁금합니다.

해결됨

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

50:24쯤에 Ability Task의 Activate 함수 작성 구간에서 void UABAT_Trace::Activate() { Super::Activate(); SpawnAndInitializeTargetActor(); FinalizeTargetActor(); SetWaitingOnAvatar(); } 로 하셨는데 void UABAT_Trace::Activate() { Super::Activate(); SetWaitingOnAvatar(); SpawnAndInitializeTargetActor(); FinalizeTargetActor(); } 이렇게 SetWaitingOnAvatar함수를 먼저 Task수행전에 호출해도 괜찮은지 궁금합니다. SetWaitingOnAvatar 함수를 호출이유가 해당 작업이 아직 안끝났다는걸 ASC에게 알려주기 위해 Waiting상태로 만든다고 들어서 이게 가능하다 생각되고 실제로도 돌려보니 별 다른점이 없어서 물어봅니다.

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
김근우 댓글 1 좋아요 0 조회수 175

OnRep_PlayerState 함수 질문입니다.

해결됨

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

현재 15강 까지의 로직에서 볼 때, 게임 시작 후 캐릭터가 생성되거나 죽어서 다시 새로 생성될 때, OnRep_PlayerState 함수가 호출되는데요. 그 이유가 PlayerState의 내부 값인 PlayerID가 초기화 되기 때문인 걸까요?

  • unreal-engine
  • 네트워크
  • 언리얼-c++
임성우 댓글 2 좋아요 0 조회수 162

2강 보고 요약 정리해봤는데 검토 부탁드립니다.

해결됨

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

ASC_Actor : ASC 부착된 액터. GA : ASC_Actor 가 아닌 이곳에서 기능을 구현. Tag : ASC_Actor 와 GA의 연결다리 (의존성 약화) [ Tag 사용법 ] <1> 공용 Tag 헤더파일 선언. (ASC_Actor , GA 모두 보유) ㄴ 두 태그를 정의함 ( 1.기본태그 2.활성화 유무확인 태그) <2> " FGameplayTagContainer 생성자(기본태그) " 로 태그객체를 만듬. <3> TryActivateAbilitiyByTag(태그객체) 다음과 같이 호출해 2번 태그가 부착되는 동시에 기능이 돌아감.

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
임성우 댓글 2 좋아요 0 조회수 172

본 별로 레이어로 블렌딩할 때

해결됨

2. [언리얼 시스템 연구 과정] UE5 스파르타 클래스: 심화편

본 별로 레이어로 블렌딩 합니다 노드에 Base Pose에는 Main States 포즈를 넣어주는 것을 알겠는데 Default Slot 슬롯에는 왜 소스 포즈로 Main States가 연결되어야 하나요?

  • unreal-engine
  • ue-blueprint
명랑코딩 댓글 2 좋아요 0 조회수 112

지역변수와 관련해서 궁금한점이 있습니다

미해결

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

// 예시 1 : 지역변수를 함수 내에서 선언하고 사용 void ASample::Tick(float DeltaTime) { Super::Tick(DeltaTime); FVector Direction = GetActorLocation(); } ------------------------------------- // 예시 2 : 헤더파일에서 FVector Direction 선언 void ASample::Tick(float DeltaTime) { Direction = GetActorLocation(); } ``` 프로그래밍에 익숙하지 않아 궁금한 내용을 질문드립니다. 반복해서 호출되는 경우, 이렇게 지역변수 안에 선언하는 것과, 헤더파일에서 선언하고 함수 내에서는 값만 대입하는것. 두 방법간에 비용(성능) 차이가 나나요? 두 방식이 섞여서 사용되는것 같아서 질문드립니다 (해당 변수의 사용은 지역변수 안에서만 사용한다고 가정)

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

Root 컴포넌트와 기즈모

미해결

[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문

안녕하세요 2-3강 '게임플레이 프레임워크' 에 7분15초 부분에서 Body를 DefaultSceneRoot 로 끌어다 놓는 부분이 있는데요, 이렇게 해보니 Body에서 보이던 기즈모가 안보이게 되고 우측 상단에서 마우스로 직접 기즈모를 클릭해도 적용이 안되더라구요. 혹시 이유가 무엇인지 알 수 있을까요? 메쉬 그 자체는 Root컴포넌트가 되면 기즈모로 조절이 불가능해지니 앞으로는 피해야 하나요? * 강의 후반부에 다시 DefaultSceneRoot 생성하는거 뒤늦게 확인했습니다!

  • unreal-engine
  • ue-blueprint
angler 댓글 1 좋아요 0 조회수 180

Gameplayability vs Gameplaycue

미해결

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

여러 계산식(방향 , 상태 체크 )이 들어간 hitreaction을 구현하려고 합니다. Gameplayability 과 Gameplaycue 중 어느 구현방식이 최적화와 서버 비용 절감에 도움이 될까요? GameplayAbility로 계산식을 구현하고 ability안에서 cue를 사용해 애니메이션을 실행시키는게 좋을까요? 궁금합니다.

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

27분에서 헤더 파일에서 #include 이유

미해결

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

헤더에서 상호 참조 또는 컴파일이 오래걸리는 것을 방지하려고 class로 전방선언하여 작업하는 것으로 이해하고 따라하고있는데, 여기서는 헤더에서 클래스를 include하여 작업하는 이유는 무엇일까요?

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

생성자에서 로딩과, Init함수에서 로딩의 차이점이 궁금합니다.

미해결

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

안녕하세요. 애셋을 로딩할 때 생성자와 Init함수의 차이 때문에 사용 API가 달라져야하는 이유가 궁금합니다. 생성자 단계에서 단순히 LoadObject<UStudent>(nullptr, *TopSoftObjectPath); 를 통해 로딩할 순 없는 정확한 이유를 모르곘습니다...! 또한 Init()의 LoadStudentObject()에서 LoadObject<>()로 TopStudent를 리턴 받은 후에, 포인터에 대한 nullptr 체크를 따로 하지 않는 이유는 LoadObject또한 해당 애셋이 무조건 있어야 올바르게 동작하기 때문인가요?

  • unreal-engine
  • 언리얼-c++
김민재 댓글 2 좋아요 0 조회수 205

FArchive 포인터의 해제 질문, 직렬화 BufferArray 질문

미해결

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

안녕하세요. 파일을 읽고 쓸 때 FArchive* 객체를 CreateFileWriter나 Reader함수를 통해 생성한 후, 해제를 꼭 해주시는데요. 저 Create함수 내부적으로 동적 할당을 진행하는 것이기 때문인가요? 또한, UObject클래스의 객체 정보를 직렬화 할 때 Buffer가 따로 필요한 이유가 궁금합니다. 마지막으로, 직렬화 된 UObject 객체를 Read할 때만 FMemoryReader가 필요한지 궁금합니다.

  • unreal-engine
  • 언리얼-c++
김민재 댓글 2 좋아요 0 조회수 162

ServerRPCAttack_Implementation함수가 이해가 안갑니다.

미해결

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

제가 이해한 되로 정리해봤습니다. 다음 사진처럼 서버 상에서 모든 캐릭터는 Authority / Autonomous 역할을 갖는다고 이해했는데요. 하지만 코드를 보면 for (APlayerController* PlayerController : TActorRange<APlayerController>(GetWorld())) { if (PlayerController && GetController() != PlayerController) //공격 명령을 내린 클라이언트와 대응되는 서버상의 액터를 제외시킴. { if (!PlayerController->IsLocalController()) { AABCharacterPlayer* OtherPlayer = Cast<AABCharacterPlayer>(PlayerController->GetPawn()); if (OtherPlayer) { OtherPlayer->ClientRPCPlayAnimation(this); } } } } 2번째 if문에서 Simulated Proxy 역할을 서버상에서 찾아서 ClientRPCPlayAnimation를 호출시킨다는게 이해가 안 갑니다. 서버에 Simulated Proxy가 없지 않나요?

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

캐릭터가 갑자기 안 움직입니다ㅜ

미해결

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

#include "InputMappingContext.h" #include "EnhancedInputComponent.h" #include "EnhancedInputSubsystems.h" void ACharacterPlayer::BeginPlay() { Super::BeginPlay(); APlayerController* PlayerController = CastChecked<APlayerController>(GetController()); if (PlayerController) { if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PlayerController->GetLocalPlayer())) { Subsystem->AddMappingContext(DefaultMappingContext, 0); } } } // Called to bind functionality to input void ACharacterPlayer::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); UEnhancedInputComponent* EnhancedInputComponent = CastChecked<UEnhancedInputComponent>(PlayerInputComponent); EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Triggered, this, &ACharacter::Jump); EnhancedInputComponent->BindAction(JumpAction, ETriggerEvent::Completed, this, &ACharacter::StopJumping); EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &ALCharacterPlayer::Move); EnhancedInputComponent->BindAction(LookAction, ETriggerEvent::Triggered, this, &ACharacterPlayer::Look); EnhancedInputComponent->BindAction(AttackAction, ETriggerEvent::Triggered, this, &ACharacterPlayer::Attack); } void ACharacterPlayer::Move(const FInputActionValue& Value) { FVector2D MovementVector = Value.Get<FVector2D>(); const FRotator Rotation = Controller->GetControlRotation(); const FRotator YawRotation(0, Rotation.Yaw, 0); const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X); const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y); AddMovementInput(ForwardDirection, MovementVector.X); AddMovementInput(RightDirection, MovementVector.Y); } void ACharacterPlayer::Look(const FInputActionValue& Value) { FVector2D LookVector = Value.Get<FVector2D>(); AddControllerYawInput(LookVector.X); AddControllerPitchInput(LookVector.Y); } 코드는 위와 같이 작성을 했습니다. 화요일까지 움직였는데 갑자기 안 움직입니다. 플러그인도 있고, IMC에도 다 설정을 했는데 갑자기 안 움직입니다... 구글에서 찾아봐도 해결이 안됩니다ㅜㅜ... ThirdPersonCharacter 를 추가해서 이 캐릭터를 사용하니 움직입니다. 그래서 ThirdPersonCharacter 의 부모 클래스를 제가 만든 클래스로 설정을 하니 다시 안 움직입니다. 코드 문제인 거 같은데 뭐가 문제인걸까요..

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

인기 태그

인프런 TOP Writers

주간 인기글