unreal38 언리얼엔진5 c++ (C++에서는 정의하지 않고, 블루프린트에서 Event 노드로 구현 함수) ▣ BlueprintImplementableEvent이 함수는 블루프린트에서 '이벤트로 구현 가능한 함수'라는 뜻입니다.다시 말해, 이 함수는 C++에서는 정의하지 않고, 블루프린트에서 Event 노드로 구현합니다.Event OnFireStarted_BP 라는 노드가 블루프린트 클래스 내에서 자동으로 생성됩니다. ▣ 전체 예시 흐름 C++에서 Fire() 함수가 실행됨.Fire() 내부에서 OnPistolFireBP() 호출.블루프린트의 Event OnPistolFireBP가 반응.블루프린트에서 원하는 연출(이펙트, 애니메이션 등)을 실행. 2025. 3. 24. 언리얼엔진5 meta ▣ meta 속성설명BindWidgetUMG 위젯을 C++ 변수에 자동 바인딩AllowPrivateAccessprivate 변수를 블루프린트에서 접근 가능하게 함ClampMin, ClampMax변수 값의 최소/최대 제한EditCondition특정 변수가 true일 때만 편집 가능DisplayName언리얼 에디터에서 표시될 변수명 변경Tooltip변수 설명 추가UIMin, UIMaxUI에서 슬라이더 범위 설정OverrideNativeName블루프린트에서 변수 이름 변경BindWidgetOptional위젯 바인딩이 선택적일 때 사용ForceInlineRowUI에서 같은 줄에 표시Categories블루프린트에서 변수 카테고리 설정WorldContext블루프린트 함수에서 월드 컨텍스트 필요CompactNodeT.. 2025. 3. 4. 언리얼엔진5 Menu Subsystem Add ▣ Initialize() 함수 (가상 함수)위젯이 생성될 때 호출되는 함수로, UUserWidget 클래스에서 상속받은 후 override 키워드로 재정의됨. 버튼 이벤트 바인딩 등을 설정하는 데 사용될 가능성이 있음.▣ UPROPERTY(meta = (BindWidget))BindWidget 속성을 사용하면, UMG(언리얼 모션 그래픽)에서 디자이너가 만든 버튼 위젯을 C++ 코드의 변수에 자동으로 연결할 수 있음. 즉, HostButton과 JoinButton은 WB_Widget에서 같은 이름으로 존재하는 버튼과 자동으로 매칭됨. UButton* 타입으로 선언되어 있으며, UI에서 버튼을 클릭하면 특정 동작을 수행하도록 연결 가능. ▣ meta란? meta는 Unreal Engine의 UPROPER.. 2025. 3. 4. 언리얼엔진5 Menu Class Setup ▣ MenuWidget이라는 이름설정 후 MultiplayerSessions Plugin으로 설정하고 클래스를 생성합니다. ▣ 그럼 이런 문구가 나옵니다. 이 메시지는 Unreal Engine 5에서 새로운 C++ 클래스를 추가했지만, MultiplayerSessions 모듈을 다시 컴파일해야 한다는 것을 의미합니다. 그리고 자동 핫 리로드(hot reload)에 실패했다는 것도 함께 나타납니다. Yes 버튼을 클릭하고 언리얼엔진을 닫은 후에 ▣ Build.cs에서 UMG 모듈을 추가하고 Generate를 하면 해결됩니다. ▣ 다시 Build.cs에서 Slate와 SlateCore를 추가합니다. Slate와 SlateCore는 Unreal Engine의 UI 시스템인 Slate(슬레이트)를 다.. 2025. 3. 3. 언리얼엔진5 Plugin Create Session Interface Delegate ▣ 첫 번째 이미지 - 부모 클래스 선택부모 클래스 선택 화면All Classes 버튼을 눌러 모든 C++ 클래스를 검색 가능하게 변경.GameInstanceSubsystem을 선택하여 새로운 서브시스템 클래스를 이 클래스로부터 상속받도록 설정.Next 버튼을 눌러 진행.- 이 작업의 목적:새로운 클래스가 GameInstanceSubsystem을 기반으로 하도록 설정.GameInstanceSubsystem을 사용하면 게임이 실행되는 동안 계속 유지되는 기능을 추가할 수 있음.따라서, 온라인 세션을 관리하는 기능을 여기에 구현할 수 있음. ▣ 두 번째 이미지 - C++ 클래스 생성 설정 새로운 C++ 클래스를 만들기 위한 설정 창입니다. 클래스 이름: MultiplaySessionsSubsystem 클.. 2025. 2. 25. 언리얼엔진5 Session Join ▣ 코드 설명 - UWorld* World = GetWorld(); GetWorld() 함수는 현재 캐릭터가 속한 UWorld 객체를 반환합니다. UWorld는 게임의 맵과 관련된 정보를 포함하는 핵심 클래스입니다. World 변수를 통해 현재 실행 중인 게임의 환경을 참조할 수 있습니다. - if (World) World가 nullptr이 아니라면, 즉, 유효한 UWorld 객체라면 다음 동작을 수행합니다. nullptr이면 아무 동작도 하지 않도록 안전하게 처리합니다. - World->ServerTravel(FString("/Game/ThirdPerson/Maps/Lobby.Lobby?listen")); ServerTravel 함수는 서버가 새로운 맵으로 이동하도록 만듭니다. "/Game/ThirdP.. 2025. 2. 18. 언리얼엔진5 Session Join Setup ▣ 코드 상세 설명 UFUNCTION(BlueprintCallable) void JoinGameSession(); UFUNCTION(BlueprintCallable)을 추가하여 블루프린트에서도 호출 가능하도록 설정 현재 온라인에서 사용 가능한 게임 세션을 검색하고, 참가하는 역할을 하는 함수 ▣void OnFindSessionsComplete(bool IsWasSuccessful); 세션 검색이 완료되었을 때 호출되는 콜백 함수 IsWasSuccessful이 true이면 세션 검색 성공, false이면 검색 실패 JoinGameSession()을 실행하면, 온라인에서 참여 가능한 세션을 검색하고, 그 결과를 OnFindSessionsComplete()에서 처리 ▣ FOnFindSessionsComple.. 2025. 2. 15. 언리얼엔진5 c++ 몇 초 뒤 OpenLevel ▣ FTimerHandle DoorTimer FTimerHandle은 Unreal Engine의 타이머를 관리하기 위한 핸들입니다.역할: 타이머를 식별하고, 특정 타이머를 취소하거나 재설정할 때 사용됩니다. 이 코드에서는 DoorTimer라는 이름의 타이머 핸들을 생성했습니다. 예시 사용법: 타이머 취소: GetWorld()->GetTimerManager().ClearTimer(DoorTimer); 타이머 상태 확인: GetWorld()->GetTimerManager().IsTimerActive(DoorTimer);▣ GetWorld()->GetTimerManager().SetTimer SetTimer는 타이머를 설정하여 특정 시간이 지난 후에 함수를 실행하거나 반복 실행하게 만듭니다. ▣ GetWor.. 2025. 1. 24. 언리얼엔진5 Blueprint BGM 재생, 정지 ▣ Audio Component 추가 및 초기화블루프린트에 Audio Component를 추가합니다. 소리를 재생하고 페이드 아웃 타이밍을 설정합니다.Fade Out 함수 노드아래 노드를 연결합니다:Fade Out Duration: 페이드 아웃에 걸릴 시간 (초 단위). 2025. 1. 24. 언리얼엔진5 c++ Sphere Trace ▣ 코드설명 FDamageEvent() 함수를 사용하기 위해서는 Engine/DamageEvents.h 헤더를 추가해야 합니다. StartLocation: 좀비 메쉬의 hand_r라는 소켓 위치를 가져옵니다. 이는 좀비의 손 위치를 기준으로 충돌을 시작하는 지점을 설정합니다.EndLocation: SphereTrace의 시작과 끝 지점을 동일하게 설정(구체 중심). 여기서는 한 지점에서만 충돌을 검사하기 때문에 동일한 값을 사용합니다.SphereRadius: 충돌 체크를 수행할 Sphere의 반지름을 설정합니다. 여기서는 70.0f로 설정되어 있습니다.Params: 충돌 계산 중에 특정 액터를 무시하도록 설정합니다. 여기서는 NormalZombie(자기 자신)를 무시하도록 추가했습니다. SweepSi.. 2024. 11. 25. 언리얼엔진5 c++ OpenLevel ▣ UGameplayStatics::OpenLevel을 사용하여 현재 맵을 다시 로드 ▣ API https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Kismet/UGameplayStatics/OpenLevel?application_version=5.5 2024. 11. 20. 언리얼엔진5 c++ Montage 함수, Montage 배열로 랜덤 재생 ▣ Montage_Play를 호출하면 해당 애니메이션이 처음부터 재생됩니다.Montage_Pause는 재생한 애니메이션을 멈춤니다.Montage_Resume는 이미 Montage_Pause된 애니메이션을 재개합니다. 하지만 Montage_Resume 전에 Montage_Play를 호출하면 의미가 없어집니다. 따라서 Montage_Resume과 Montage_Play는 동시에 호출하지 않아야 합니다. ▣ 코드설명EditAnywhere: 블루프린트에서도 편하게 설정 가능TArray: 여러 개의 애니메이션 몽타주 저장 가능 ▣ 코드 설명코드설명FMath::RandRange(0, Num - 1)배열 인덱스 범위 내에서 랜덤 선택AttackMontages[RandomIndex]선택된 애니메이션 가져오기G.. 2024. 11. 19. 언리얼엔진5 c++ GetMapName ▣ GetWorld()->GetMapName() 역할: 현재 로드된 맵의 이름을 반환. 반환 값: FString 타입으로 맵 이름을 반환합니다. 예: YourProjectName_Chapter0_Intro GetMapName은 현재 맵의 이름(예: YourProjectName_Chapter0_Intro)을 반환합니다. 이름은 프로젝트 이름과 맵 이름이 _로 연결된 형태로 반환됩니다. ▣ CurrentMapName.Contains(TEXT("Chapter0")) 역할: CurrentMapName 문자열에서 지정한 텍스트("Chapter0")를 포함하고 있는지 확인합니다. 반환 값: true: 문자열에 Chapter0이 포함된 경우. false: 문자열에 Chapter0이 포함되지 않은 경우. Conta.. 2024. 11. 16. 언리얼엔진5 c++ Ragdoll State ▣ 코드 설명 - AIController 중지 StopMovement() : AIController의 모든 이동 명령을 중지합니다. AI가 다른 목적지로 가고 있을 경우 멈추게 합니다.UnPossess() : AIController가 캐릭터와의 연결을 끊습니다. 이렇게 하면 AIController가 더 이상 캐릭터를 제어하지 않으며, 캐릭터는 자유로운 상태가 됩니다. 이 두 개의 함수 호출로 인해 캐릭터가 죽으면 AI가 완전히 중지되어 추가 명령이 캐릭터에 전달되지 않게 됩니다. - Character Movement 중지 DisableMovement(): 캐릭터의 이동 기능을 비활성화하여 움직임이 멈추도록 합니다.- Physics Simulation 활성화 및 Collision Profile 변경 S.. 2024. 11. 15. 언리얼엔진5 c++ Damage IgnoreHit random ▣ 코드 설명 IgnoreHitChance 설정: IgnoreHitChance 값으로 피격 반응을 무시할 확률을 설정합니다. 예를 들어, 0.3f로 설정하면 30% 확률로 피격 반응을 무시합니다.확률 계산: FMath::FRand()는 0.0에서 1.0 사이의 랜덤 부동소수점 값을 반환합니다. 이 값이 IgnoreHitChance 이하일 경우 피격 반응을 무시합니다.피격 반응 조건: 확률을 통해 피격 반응이 무시된 경우에는 return Damage;로 함수를 종료하여 피격 효과와 애니메이션을 재생하지 않습니다. 확률에 따라 피격 반응이 무시되지 않은 경우, 피격 애니메이션과 효과를 정상적으로 재생합니다. 2024. 11. 12. 언리얼엔진5 c++ AI Damage Stop Move ▣ MovementComponent->StopMovementImmediately() 설명: 이 함수는 모든 현재 이동을 즉시 중지합니다. 캐릭터가 이동 중이든 가속 중이든 상관없이 이동을 멈추며, 위치를 고정시킵니다. 주 용도: 캐릭터의 이동을 멈추고 싶을 때 사용됩니다. 예를 들어, 피격 효과를 구현할 때 캐릭터가 이동 중이라면 이를 멈추게 하는 데 유용합니다. ▣ MovementComponent->SetComponentTickEnabled(false) 설명: 이 함수는 컴포넌트의 틱(Tick) 업데이트를 비활성화합니다. 즉, 컴포넌트가 매 프레임 업데이트되지 않으며, 이를 통해 움직임을 일시적으로 멈출 수 있습니다. 주 용도: 애니메이션과 피격 효과는 유지하면서 이동만 멈추고자 할 때 사용합니다. ▣.. 2024. 11. 11. 언리얼엔진5 c++ Hit Niagara 재생 ▣ NiagaraFunctionLibrary를 사용하기 위해서는 Niagara 모듈을 프로젝트에 추가해야 합니다. Niagara 모듈이 포함되지 않으면 해당 헤더 파일을 찾을 수 없다는 오류가 발생할 수 있습니다. 이를 해결하려면 프로젝트의 Build.cs 파일에 Niagara 모듈을 추가해야 합니다. ▣ UNiagaraSystem 타입을 사용하여 Niagara FX를 HitFXArray에 추가합니다.UNiagaraFunctionLibrary::SpawnSystemAtLocation을 사용하여 충돌 위치(HitLocation)에서 Niagara FX를 재생합니다.각 Niagara FX는 /Game/Effects/NS_Hit1와 같은 경로에 위치한다고 가정합니다. 필요에 따라 경로 했습니다. ▣ Const.. 2024. 11. 8. 언리얼엔진5 c++ UMETA(DisplayName = " ") ▣ UMETA(DisplayName = "")는 Unreal Engine의 UENUM에서 각 열거형 값(enum value)에 특정한 디스플레이 이름(Display Name)을 지정할 때 사용됩니다.UMETA는 Unreal의 메타데이터 표기로, DisplayName은 엔진 에디터에 표시될 이름을 지정할 수 있는 메타 데이터 필드입니다.이를 사용하면 에디터에서 더 직관적이고 사용자 친화적인 이름으로 열거형 값을 표시할 수 있습니다. ▣ UMETA가 유용한 이유 UMETA(DisplayName = "Work")와 같은 메타데이터를 활용하면 다음과 같은 장점이 있습니다:에디터에서 더 직관적인 이름 제공: DisplayName을 통해 C++ 변수명 대신 더 직관적이고 보기 좋은 이름을 제공할 수 있습니다. 다국.. 2024. 10. 26. 언리얼엔진5 c++ 카메라 상하 이동(총기 반동) ▣ AddPitchInput(float Val) 설명: 카메라의 피치(Pitch)를 조정하는 함수로, 카메라를 상하로 움직입니다. 입력 값(Val)이 양수이면 카메라가 아래로 향하고, 음수이면 위로 향하게 됩니다. 1인칭 게임에서는 위아래 시점 조절, 3인칭 게임에서는 카메라 높이 조절로 사용됩니다. API :https://docs.unrealengine.com/5.0/en-US/API/Runtime/Engine/GameFramework/APlayerController/AddPitchInput/ ▣ AddYawInput(float Val) 설명: 카메라의 야우(Yaw)를 조정하는 함수로, 카메라를 좌우로 회전시킵니다. 입력 값(Val)이 양수이면 카메라가 오른쪽으로 회전하고, 음수이면 왼쪽으로 회전합니.. 2024. 10. 1. 언리얼엔진5 c++ Widget Image Change, Widget Text Change ▣ 헤더 파일 추가 (#include "Components/Image.h") UImage를 사용하기 위해 Components/Image.h 헤더를 추가합니다. 이 헤더에는 이미지 위젯과 관련된 모든 함수 및 클래스가 정의되어 있습니다. ▣ 조건 체크 및 초기화 if (Animinstance->IsGetWeapon && Animinstance->WeaponType != 3): 플레이어가 무기를 장착하고 있고, 무기의 종류가 특정 타입(3번 타입)이 아닌 경우 조준 상태로 변경하는 조건입니다. if (HUDClass == nullptr): HUDClass가 아직 로드되지 않은 상태라면, LoadClass를 사용해 블루프린트 위젯 클래스를 로드합니다. TEXT("/Game/UMG/WB_HUD.WB_HUD_.. 2024. 9. 27. 언리얼엔진5 c++ ConstructorHelpers::FClassFinder와 LoadClass<>, LoadObject<> 차이 ▣ ConstructorHelpers::FClassFinder 역할: 클래스를 찾는 데 사용되며, 주로 객체(액터, 컴포넌트 등)의 생성자(Constructor)에서 사용됩니다. 사용 시점: 객체가 생성될 때, 자산이나 클래스를 미리 로드하여 사용할 때 주로 사용됩니다. 특징: 주로 생성자 안에서 사용되며, 클래스나 자산을 즉시 로드합니다. 하드 리퍼런스를 사용하기 때문에 로드 경로에 있는 자산이나 클래스가 반드시 존재해야 합니다. 잘못된 경로나 존재하지 않는 클래스가 있을 경우 런타임 에러가 발생할 수 있습니다. 로드가 즉시 이루어지기 때문에, 게임 시작 시점 또는 에디터 로드 시점에 성능 저하를 초래할 수 있습니다. 주 사용 사례: 클래스가 반드시 있어야 하는 경우: 즉시 해당 클래스를 찾아서 로드해.. 2024. 9. 14. 이전 1 2 다음