묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결언리얼 엔진 5 스파르타 클래스 [Part2 심화편]
본 별로 레이어로 블렌딩할 때
본 별로 레이어로 블렌딩 합니다 노드에Base Pose에는 Main States 포즈를 넣어주는 것을 알겠는데Default Slot 슬롯에는 왜 소스 포즈로 Main States가 연결되어야 하나요?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
21분 30초쯤에 SetIsReplicated(true);를 생성자에서 InitializeComponent함수로 옮긴 이유를 잘 모르겠습니다
단순히 생성자에 선언하면 언리얼 엔진이 빼먹을 가능성이 있어서 그런건가요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
지역변수와 관련해서 궁금한점이 있습니다
// 예시 1 : 지역변수를 함수 내에서 선언하고 사용 void ASample::Tick(float DeltaTime) { Super::Tick(DeltaTime); FVector Direction = GetActorLocation(); } ------------------------------------- // 예시 2 : 헤더파일에서 FVector Direction 선언 void ASample::Tick(float DeltaTime) { Direction = GetActorLocation(); } ```프로그래밍에 익숙하지 않아 궁금한 내용을 질문드립니다.반복해서 호출되는 경우, 이렇게 지역변수 안에 선언하는 것과, 헤더파일에서 선언하고 함수 내에서는 값만 대입하는것. 두 방법간에 비용(성능) 차이가 나나요? 두 방식이 섞여서 사용되는것 같아서 질문드립니다 (해당 변수의 사용은 지역변수 안에서만 사용한다고 가정)
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
Root 컴포넌트와 기즈모
안녕하세요2-3강 '게임플레이 프레임워크' 에 7분15초 부분에서 Body를 DefaultSceneRoot 로 끌어다 놓는 부분이 있는데요, 이렇게 해보니 Body에서 보이던 기즈모가 안보이게 되고 우측 상단에서 마우스로 직접 기즈모를 클릭해도 적용이 안되더라구요.혹시 이유가 무엇인지 알 수 있을까요? 메쉬 그 자체는 Root컴포넌트가 되면 기즈모로 조절이 불가능해지니 앞으로는 피해야 하나요? * 강의 후반부에 다시 DefaultSceneRoot 생성하는거 뒤늦게 확인했습니다!
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
Gameplayability vs Gameplaycue
여러 계산식(방향 , 상태 체크 )이 들어간 hitreaction을 구현하려고 합니다. Gameplayability 과 Gameplaycue 중 어느 구현방식이 최적화와 서버 비용 절감에 도움이 될까요? GameplayAbility로 계산식을 구현하고 ability안에서 cue를 사용해 애니메이션을 실행시키는게 좋을까요? 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
27분에서 헤더 파일에서 #include 이유
헤더에서 상호 참조 또는 컴파일이 오래걸리는 것을 방지하려고 class로 전방선언하여 작업하는 것으로 이해하고 따라하고있는데, 여기서는 헤더에서 클래스를 include하여 작업하는 이유는 무엇일까요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
생성자에서 로딩과, Init함수에서 로딩의 차이점이 궁금합니다.
안녕하세요.애셋을 로딩할 때 생성자와 Init함수의 차이 때문에 사용 API가 달라져야하는 이유가 궁금합니다. 생성자 단계에서 단순히 LoadObject<UStudent>(nullptr, *TopSoftObjectPath); 를 통해 로딩할 순 없는 정확한 이유를 모르곘습니다...! 또한 Init()의 LoadStudentObject()에서 LoadObject<>()로 TopStudent를 리턴 받은 후에, 포인터에 대한 nullptr 체크를 따로 하지 않는 이유는 LoadObject또한 해당 애셋이 무조건 있어야 올바르게 동작하기 때문인가요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
FArchive 포인터의 해제 질문, 직렬화 BufferArray 질문
안녕하세요.파일을 읽고 쓸 때 FArchive* 객체를 CreateFileWriter나 Reader함수를 통해 생성한 후, 해제를 꼭 해주시는데요.저 Create함수 내부적으로 동적 할당을 진행하는 것이기 때문인가요?또한, UObject클래스의 객체 정보를 직렬화 할 때 Buffer가 따로 필요한 이유가 궁금합니다.마지막으로, 직렬화 된 UObject 객체를 Read할 때만 FMemoryReader가 필요한지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
ServerRPCAttack_Implementation함수가 이해가 안갑니다.
제가 이해한 되로 정리해봤습니다. 다음 사진처럼서버 상에서 모든 캐릭터는 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가 없지 않나요?
-
미해결이득우의 언리얼 프로그래밍 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 의 부모 클래스를 제가 만든 클래스로 설정을 하니 다시 안 움직입니다. 코드 문제인 거 같은데 뭐가 문제인걸까요..
-
미해결하루만에 언리얼 엔진5 입문하기
게임 승리해도 시간 지나면 패배하는 문구가 떠요
게임에 승리해도 대기 해서 시간이 지나면 패배했다는 문구가 프린트 되더라고요. 그래서 시간이 끝나면 cast to BP_캐릭터 이거 써서 Is There A coin을 불러 오고 Branch를 통해 false일 경우에 실행시킬려고 해보고 컴파일 해 봤지만 Objet가 지정되어 있지 않다고 에러가 나더라고요.오브젝트를 지정해서 연결할수 있는 노드가 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
패키징에 관한 질문입니다
UATHelper: Packaging (Windows): Running AutomationTool...UATHelper: Packaging (Windows): Using bundled DotNet SDK version: 6.0.302UATHelper: Packaging (Windows): Starting AutomationTool...UATHelper: Packaging (Windows): Parsing command line: -ScriptsForProject=D:/UnrealGame/Test/Test.uproject Turnkey -command=VerifySdk -platform=Win64 -UpdateIfNeeded -EditorIO -EditorIOPort=64148 -project=D:/UnrealGame/Test/Test.uproject BuildCookRun -nop4 -utf8output -nocompileeditor -skipbuildeditor -cook -project=D:/UnrealGame/Test/Test.uproject -target=Test -unrealexe="C:\Program Files\Epic Games\UE_5.4\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" -platform=Win64 -installed -stage -archive -package -build -clean -pak -iostore -compressed -prereqs -archivedirectory=D:/UnrealGame/Test/package -clientconfig=Shipping -nodebuginfo -nocompile -nocompileuatUATHelper: Packaging (Windows): Initializing script modules...UATHelper: Packaging (Windows): Total script module initialization time: 0.30 s.UATHelper: Packaging (Windows): Using C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exeUATHelper: Packaging (Windows): Executing commands...UATHelper: Packaging (Windows): Installed Sdk validity:UATHelper: Packaging (Windows): Win64: (Status=Valid, MinAllowed_Sdk=10.0.18362.0, MaxAllowed_Sdk=10.9.99999.0, Current_Sdk=10.0.22621.0, Allowed_AutoSdk=10.0.19041.0, Current_AutoSdk=, Flags="InstalledSdk_ValidVersionExists")UATHelper: Packaging (Windows): Scanning for envvar changes...UATHelper: Packaging (Windows): ... done! UATHelper: Packaging (Windows): Cleaning Temp Paths...UATHelper: Packaging (Windows): BUILD SUCCESSFULUATHelper: Packaging (Windows): Setting up ProjectParams for D:\UnrealGame\Test\Test.uprojectUATHelper: Packaging (Windows): ********** BUILD COMMAND STARTED **********UATHelper: Packaging (Windows): Running: C:\Program Files\Epic Games\UE_5.4\Engine\Binaries\ThirdParty\DotNet\6.0.302\windows\dotnet.exe "C:\Program Files\Epic Games\UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" Test Win64 Shipping -Project="D:\UnrealGame\Test\Test.uproject" -Clean -NoHotReload "D:\UnrealGame\Test\Test.uproject" -NoUBTMakefiles -remoteini="D:\UnrealGame\Test" -skipdeploy -log="C:\Users\user\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.4\UBA-Test-Win64-Shipping.txt"UATHelper: Packaging (Windows): Log file: C:\Users\user\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.4\UBA-Test-Win64-Shipping.txtUATHelper: Packaging (Windows): No target name was specified on the command-line.UATHelper: Packaging (Windows): Took 0.30s to run dotnet.exe, ExitCode=6UATHelper: Packaging (Windows): UnrealBuildTool failed. See log for more details. (C:\Users\user\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.4\UBA-Test-Win64-Shipping.txt)UATHelper: Packaging (Windows): AutomationTool executed for 0h 0m 2sUATHelper: Packaging (Windows): AutomationTool exiting with ExitCode=6 (6)UATHelper: Packaging (Windows): BUILD FAILEDPackagingResults: Error: Unknown Error 패키징이 안되는데 무슨 문제일까요???
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
콤보 애니메이션 몽타주의 MontageJumpToSection에 대하여
안녕하세요. 하나의 콤보 애니메이션 몽타주에서 섹션으로 점프하는 방식으로 강의 내용이 진행되고 있는데요. 강의 프로젝트 재확인하는 느낌으로 개인 프로젝트를 조금씩 진행하고 있는 중 콤보 공격을 넣기 위해 강의 내용따라 애니메이션 몽타주를 만들었습니다. JumpToSection 을 사용하게 되면 애님 몽타주 내부에서 해당 지점으로 바로 점프해버리다보니 점프 직전 프레임과 이후 프레임간의 모션 차이가 클 경우 상당히 눈에 띄더라구요. 그래서 각 콤보 공격의 단계를 개별 애니메이션 몽타주로 제작하고 다음 콤보 입력시 개별 애니메이션 몽타주 재생을 해봤는데 이 경우는 애니메이션 블렌딩이 되어 자연스럽게 이어지는것 처럼 보였습니다. 여기서 질문인데, JumpToSection 이 직전/직후 프레임간의 애니메이션 블렌딩이 불가능하다면 실제 프로젝트에서는 어떤 상황에서 사용하게 되는지 궁금합니다. 감사합니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
PossessedBy() 함수는 싱글플레이에서는 호출되지 않나요?
PossessedBy 함수가 서버에서만 호출된다면, 싱글플레이용 게임에서는 어느 위치에서 Character 의 ASC 에 PlayerState 의 ASC 를 대입하는게 적절할지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
SetTimer
안녕하세요. 혼자 게임을 만들어보다가 타이머 함수에 대해 궁금한게 생겨 질문을 드립니다.SetTimer(FTimerHandle& InOutHandle, UserClass* InObj, typename FTimerDelegate::TMethodPtr< UserClass > InTimerMethod, float InRate, bool InbLoop = false, float InFirstDelay = -1.f)SetTimer 함수의 인자를 살펴보면 InFirstDelay라고 있는데 이건 무슨 변수인가요?구글에서 찾아보니 최초 실행 시 대기 시간이라고 하던데 만약 2로 설정되어 있다면 2초 뒤에 타이머가 실행이 된다는 소리인가요?
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
전혀 이해가 가질 않네요.
GameplayTags 파트부터 지금 AssetManager까지뭔가 보여주기만 하고 각각에 해당하는 설명이 너무나 부족한게 느껴집니다. 18:00에서 보여주는 AssetManager의 cpp 코드를싹 복붙해와서 데이터쪽은 하나하나 작성하는 의미가 없다??그럼 적어도 왜 의미가 없는지는 설명해주셔야하는거 아닐까요..9:00에서 보여주는 #include "R1LogChannels.h"이거는 또 뭔데요? 그냥 추가만 하고 설명은 왜 없나요..해당 헤더가 없어도 InputData.cpp의 코드는 이상없이 돌아가는 것 같은데요.4:00에서 보여주는 PreSave 메서드에 대해서도진짜 뭐가 뭔지 하나도 모르겠어요. 코드 복붙해와서 보여주고 설명도 대충 하고 넘어가면 학습자가 알아서 검색하고 공부하라는건가요? 그렇다면 이 강의는 왜 유료인건가요. 솔직히 지금까지 루키스님 강의 보면서 설명이 필요한 부분에서 뭔가 어물쩡 넘어가는 경우를 좀 느꼈었는데 그래도 계속 혼자 루키스님 강의 보면서 많이 배우게 됐고 웬만하면 질답도 안남기고 조용히 잘 학습하고있었는데요,이번 파트에서 너무 답답함을 느껴서 글 남깁니다..
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
Subsystem 배포 버전에서 동작
Subsystem에 대한 설명을 들으면 개발 단계의 편의성을 위해서 싱글톤을 유동적으로 관리하는 것이라고 이해되는데 그러면 배포버전(패키지)에서는 어떤 식으로 동작하나요? 그냥 일반 싱글톤이 되는 건가요? 아니면 경우에 따라서 새로 생성되고 삭제되는 과정을 거치는 건가요?
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
의구심이 듭니다
어찌저찌 part4까지는 들으며 왔는데솔직히 그간 내용 전부 다 기억하고 안보고 다시 할 수 있다곤 말못하겠는데.. 오늘 DataAsset 관련 파트 보면서 이걸 여태까지 내가 들은 수업으로 이해할 수 있는걸까? 란 생각이 듭니다. 물론 여태까지 이런 부분들이 꽤나 많았지만 다음에 '필요할때' 다시 찾아보면 되지, 굳이 다시 언급되는 부분이 아니면 이런식으로 넘어왔는데. 이렇게 하나씩 하나씩 차곡차곡 모르는게 쌓이다보니 제가 제대로 하고 있는건지 의구심이 좀 드네요. c++ 문법도 아직 제대로 다루지 못하는 두 달배기 뉴비인데이런식으로 공부하는게 맞을까요..?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
TArray와 UPROPERTY
안녕하세요.TArray로 UObejct를 관리할때 UPROPERTY를 붙이는건가요 TArray로 포인터를 다룰때 붙여야하는건가요? 이 것에 대한 내용이 정리가 잘 되지않아서 질문드립니다
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
언리얼 파일을 만드는데 오류가 뜹니다
어떻게 하면 해결이 될까요 vscode는 실행이 되는데 언리얼이 실행이 안됩니다.