본문 바로가기

전체 글658

언리얼엔진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 Create Session ▣ bInitServerOnClient=true란? bInitServerOnClient=true는 Steam Online Subsystem에서 클라이언트가 직접 서버를 호스팅 할 수 있도록 설정하는 옵션입니다. 즉, 전용 서버(Dedicated Server) 없이 클라이언트가 자체적으로 멀티플레이어 세션을 만들고, 다른 플레이어를 초대할 수 있도록 합니다. ▣ 언제 bInitServerOnClient=true를 사용해야 할까? 호스트 플레이어(클라이언트)가 직접 세션을 만들고 다른 플레이어를 초대하는 경우일반적인 P2P 멀티플레이 게임에서는 플레이어 한 명이 세션을 생성하고 다른 플레이어가 참가하는 방식이 일반적입니다. 예를 들어, 로컬에서 방을 만들고 친구를 초대하는 Steam 멀티플레이 게임이라면 b.. 2025. 2. 14.
언리얼엔진5 Online Subsystem Steam Connection ▣ TSharedPtr OnlineSessionInterface; IOnlineSession을 스마트 포인터(TSharedPtr)로 관리하여 세션 인터페이스를 안전하게 사용. ESPMode::ThreadSafe를 사용하여 멀티스레드 환경에서도 안전하게 공유할 수 있도록 설정. ▣  멀티스레드(Multithreading)란 하나의 프로그램(프로세스) 내에서 여러 개의 작업(스레드, Thread)을 동시에 실행하는 기술을 의미합니다. ▣  스레드(Thread)란? 스레드는 프로세스 내에서 실행되는 작은 작업 단위. 하나의 프로그램(프로세스)은 여러 개의 스레드를 가질 수 있음.▣  멀티스레드란? CPU의 여러 코어를 활용하여 여러 작업을 동시에 실행하는 방식. Unreal Engine 같은 게임 엔진에서는 .. 2025. 2. 13.
언리얼엔진5 Online Subsystem Steam Setting ▣ C++ Platform으로 프로젝트를 생성하고 Online Subsystem Steam 플러그인을 설치합니다.   ▣ build.cs에서 OnlineSubsystemSteam, OnlineSubsystem을 추가합니다.Unreal Engine에서 Online Subsystem Steam을 사용하려면 Build.cs 파일에 관련된 모듈을 추가해야 합니다.이는 Unreal Build System(UBT)이 컴파일 시 필요한 모듈을 포함하도록 지시하기 위함입니다.  ▣ 프로젝트 폴더에서 Config 폴더에 들어가서  DefaultEngine.ini  파일을 선택합니다.    ▣ APIhttps://dev.epicgames.com/documentation/ko-kr/unreal-engine/online-su.. 2025. 2. 13.
언리얼엔진5 c++ Multiplay test ▣ Default Level과 Lobby Level을 생성합니다.   ▣ Player Blueprint에서 1번 키를 눌렀을 때, 2번 키를 눌렀을 때에 대한 노드를 완성합니다.  ▣ Options 옵션이란? 역할: 레벨이 로드될 때 추가적인 설정이나 명령행 옵션을 전달하는 문자열입니다. 예를 들어, "open MyMap?listen"와 같이 사용하면 MyMap을 로드하면서? listen 옵션도 함께 적용됩니다. ▣ 사용 방식: Open Level (by Name) 노드에서 Level Name과 함께 Options 입력란에 옵션 문자열을 넣어주면, 엔진은 이를 레벨 로딩 명령에 추가하여 처리합니다. ▣ 왜 Options에 listen을 넣어야 하는가? 리슨 서버 모드 지정: listen 옵션은 현재 게임.. 2025. 2. 11.
언리얼엔진5 c++ virtual, override ▣ 부모 클래스에서 virtual을 사용하면 자식 클래스에서 재정의(Override) 가능 virtual을 사용하지 않으면 부모 클래스의 함수만 호출됨 ▣ override 키워드는 부모의 가상 함수를 정확히 재정의(Overriding)하는지 확인하는 역할을 합니다.   ▣ 추상 클래스(Abstract Class)를 활용하여, 강제적으로 자식 클래스에서 함수 재정의하도록 만듭니다. 2025. 2. 8.
언리얼엔진5 c++ Class, 생성자, 기본멤버함수 ▣ 클래스 (Class)클래스는 객체를 생성하는 템플릿(설계도)이다. 멤버 변수(속성)와 멤버 함수(기능)로 구성됨. 생성자(Constructor)를 이용해 멤버 변수를 초기화할 수 있음.      ▣ 생성자(Constructor)가 가장 먼저 실행됩니다.  ▣ BeginPlay()가 게임이 시작될 때 한 번 호출됩니다. ▣ Tick(float DeltaTime)이 프레임마다 실행되며 메시지가 출력됩니다. ▣ 소멸자(Destructor)가 실행되며 객체가 메모리에서 해제됩니다.  ▣ 상속하여 자식 클래스를 활용하여 부모클래스 함수를 호출해서 사용 가능 2025. 2. 8.
유니티 LOD Group ▣ LOD Group 컴포넌트를 관리할 빈오브젝트를 생성하고 컴포넌트를 추가합니다.   ▣ LOD Group컴포넌트에 있는 빈오브젝트 안에 여러 모양에 오브젝트를 추가합니다.   ▣ LOD Group에서 LOD 0, LOD 1, LOD 2 등 레벨마다 Renders를 하나씩 추가합니다.  ▣ LOD Levels (LOD 레벨) LOD Group에서는 여러 개의 LOD 레벨을 추가할 수 있습니다. 각 LOD 레벨에는 다른 메쉬(Renderer)를 설정할 수 있으며, 카메라 거리(뷰 프러스텀)에 따라 특정 LOD가 활성화됩니다. LOD 0: 가장 높은 디테일의 모델 (가장 가까운 거리에서 보임) LOD 1: 중간 디테일 모델 LOD 2: 낮은 디테일 모델 LOD 3 (이하 추가 가능): 더 낮은 디테일 모델.. 2025. 2. 8.
언리얼엔진5 c++ int32 타입의 숫자를 FText로 변환 ▣ SetText(FText) : UTextBlock의 텍스트를 설정하는 함수▣ FText::AsNumber(int32 Value) : int32 타입의 숫자를 FText로 변환하는 함수▣ 즉, MedicineMap[EMedicineType::Drink] (현재 음료 개수)를 FText로 변환한 후 DrinkCountTextBlock에 설정합니다. 2025. 1. 31.
언리얼엔진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++ GetMapName UEDPIE_0_ 제거 ▣ 코드 설명 LevelName:World->GetMapName()을 통해 현재 레벨 이름을 가져옵니다. 접두사가 포함된 상태의 원본 이름입니다.원본이름 : UEDPIE_0_TutorialsMapPrefix:World->StreamingLevelsPrefix를 사용하여 접두사를 확인합니다. 이 값은 접두사가 없을 경우 빈 문자열이 될 수도 있습니다.접두사 : UEDPIE_0_StartsWith():StartsWith(Prefix): 레벨 이름이 Prefix로 시작하는지 확인합니다.레벨 이름이 접두사로 시작하는지 확인합니다. 접두사가 포함된 경우, 이를 RightChop(Prefix.Len())으로 제거합니다. RightChop(Prefix.Len()): 접두사의 길이만큼 문자열을 잘라냅니다. ▣ 결과: .. 2025. 1. 23.
언리얼엔진5 c++ ActorName Find 문자제거 ▣ 코드 분석 Hit.GetActor()->GetName()충돌된 액터의 이름을 가져옵니다. 이름은 FString 형식으로 반환됩니다. ▣ GetName설명:UObject의 이름을 반환하는 함수입니다.이름은 FString 형식으로 반환되며, 이는 해당 객체가 엔진 내에서 사용되는 고유 이름입니다.사용 예시:FString Name = Hit.GetActor()->GetName();주요 활용:디버깅 시 객체 이름 확인.이름을 기반으로 객체 필터링 또는 분류. ▣ LeftChop설명:문자열의 끝에서 지정한 길이만큼 제거하여 새로운 문자열을 반환합니다.사용 예시:FString Result = ItemName.LeftChop(3); // 끝에서 3글자 제거주요 활용:특정 패턴의 끝 부분을 제거하여 필요한 부분만 .. 2025. 1. 22.
유니티 상속(Inheritance) ▣ 상속이란?상속은 객체 지향 프로그래밍(Object-Oriented Programming, OOP)에서 자식 클래스가 부모 클래스의 속성과 메서드를 물려받는 기능을 말합니다. 이를 통해 코드 재사용성을 높이고, 공통 기능을 한 곳에서 관리할 수 있어 유지보수성을 향상할 수 있습니다.▣  왜 사용하는가?코드 재사용성: 공통된 기능을 부모 클래스에 정의하여 여러 자식 클래스에서 재사용할 수 있습니다.유지보수성: 기능을 한 곳에서 관리하여 수정이 필요할 때 중복된 코드를 일일이 수정할 필요가 없습니다.확장성: 기존 코드를 기반으로 새로운 기능을 쉽게 추가할 수 있습니다.가독성: 중복 코드를 제거해 코드가 간결해지고 읽기 쉬워집니다.▣  언제 사용하는가?여러 클래스가 공통된 속성과 메서드를 가질 때.유사한 기.. 2025. 1. 15.
유니티 namespace ▣ 설명클래스와 메서드 이름 충돌 방지 및 코드 그룹화.▣ 사용 방법  namespace 키워드로 선언.▣ 언제 사용클래스 간 이름 충돌을 방지할 때. 2025. 1. 14.
언리얼엔진5 c++ CanvasPanel ▣ .h, .cpp 코드에 헤더를 추가합니다.   ▣ .h 헤더파일에 UCanvasPanel을 선언합니다.  ▣ HUDWidget: UI를 관리하는 UUserWidget의 인스턴스를 가리킵니다. CreateWidget: 새로운 UUserWidget 인스턴스를 생성합니다. GetWorld()->GetFirstPlayerController(): 현재 월드에서 첫 번째 플레이어 컨트롤러를 가져옵니다. HUDClass: 블루프린트나 C++로 정의된 HUD 위젯 클래스입니다. 목적: HUDWidget이 아직 생성되지 않았다면, CreateWidget을 통해 생성합니다. ▣ HUDWidget->IsInViewport(): HUDWidget이 현재 화면에 추가되었는지 확인합니다. HUDWidget->AddToView.. 2025. 1. 13.
언리얼엔진5 Pain Causing Volume (함정, 불, 발판 데미지 볼륨) ▣ 먼저 Pain Causing Volume을 추가합니다.  ▣ 디테일탭에서 필요한 값을 조절합니다.Pain Causing 피해 유발 - 볼륨이 현재 대미지를 입힐지 말지입니다. Damage Per Sec 초당 대미지 - Pain Causing 이 켜져 있을 때 볼륨에 있는 액터에게 입히는 초당 대미지입니다. Damage Type 대미지 유형 - 액터에 가해지는 대미지 유형을 나타냅니다. Pain Interval Pain Causing 이 켜졌을 때 대미지가 적용되는 초단위 간격입니다. Entry Pain 진입 피해 - Pain Causing 이 켜진 볼륨에 들어설 때 Pain Interval 에 따른 지속 대미지에 추가로 즉시 적용할 대미지를 나타냅니다.  ▣ 충돌한 대상 Player에 Event Da.. 2025. 1. 13.
유니티 new 키워드 ▣ new 키워드 사용객체를 생성하고 메모리를 할당합니다. 참조형 데이터 타입(클래스, 배열 등)을 사용할 때 주로 사용됩니다. 예시: new ClassName() 또는 new int[10]▣ new 키워드 미사용값 형식(구조체, 기본 데이터 타입 등)의 경우 기본값이 자동으로 설정됩니다. 참조형 데이터 타입에서는 null로 초기화되며, 메모리를 명시적으로 할당하지 않습니다. 예시: int, float, string ▣ int는 값 형식이므로 메모리를 명시적으로 할당할 필요가 없습니다. 초기화 없이 사용하면 컴파일러 오류가 발생합니다.  ▣ GameObject는 참조 형식이므로 new 키워드를 사용하여 메모리를 할당해야 객체를 생성할 수 있습니다. new 없이 사용하려 하면 NullReferenceExc.. 2025. 1. 13.
언리얼엔진5 Blueprint Camera Zoom ▣ Timeline을 활용해서 0.3초에 0->1 값으로 Alpha이 바뀌는데 이걸 활용해서 카메라 줌과 위치를 변경하는 블루프린트 노드 제작했습니다. 2025. 1. 11.
유니티 GitHub 기본 연동방법 https://github.com/ GitHub · Build and ship software on a single, collaborative platformJoin the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.github.com https://desktop.github.com/download/ Download GitHub DesktopSimple collaboration from your desktopdesktop.github... 2025. 1. 10.
유니티 MonoBehaviour ▣ MonoBehaviour란? MonoBehaviour는 Unity의 모든 스크립트가 기본적으로 상속받는 클래스입니다. Unity 엔진과 스크립트를 연결하는 역할을 하며, 게임 오브젝트에 스크립트를 부착하고 다양한 이벤트 메서드를 사용할 수 있게 합니다. ▣  MonoBehaviour를 사용하는 이유 Unity의 게임 오브젝트와 상호작용하기 위해 필요. Unity의 라이프사이클 이벤트(Start, Update 등)를 활용 가능. 스크립트를 통해 씬에 존재하는 오브젝트를 제어할 수 있음. ▣  주요 이벤트 메서드 MonoBehaviour를 상속하면 Unity의 특정 이벤트에서 자동으로 호출되는 메서드를 사용할 수 있습니다. 초기화 관련 Awake(): 스크립트가 활성화될 때 호출. 오브젝트의 초기화에 적.. 2025. 1. 10.
유니티 반복문 ▣ 반복문 종류 for: 정해진 횟수만큼 반복 while: 조건이 참일 때 반복 foreach: 컬렉션의 모든 요소 반복 in 키워드 사용do-while: 조건에 상관없이 최소 한 번 실행 후 조건을 평가 in : in 키워드는 foreach 문에서 컬렉션의 요소를 순회할 때 사용, 조건문일 때 사용 불가 var :  var는 컴파일러가 변수의 자료형을 자동으로 추론하도록 하는 키워드 2025. 1. 9.
언리얼엔진5 일정 시간 후 호출함수 ▣ FTimerHandle HitSoundDelayHandle 타이머 핸들(Handle): 이 변수는 타이머를 식별하는 데 사용됩니다. 특정 타이머를 관리하거나 중지(ClearTimer)하기 위해 필요합니다. FTimerHandle은 FTimerManager와 함께 작동하며, 타이머 설정, 실행, 삭제 등을 처리합니다. ▣ GetWorld()->GetTimerManager() 타이머 매니저(Timer Manager): GetTimerManager()는 타이머를 관리하는 클래스인 FTimerManager에 접근하는 함수입니다. 이를 통해 타이머를 생성, 시작, 정지, 리셋할 수 있습니다. GetWorld() 함수는 현재 월드의 포인터를 반환하며, 이를 통해 타이머 매니저를 사용할 수 있습니다. ▣ SetT.. 2024. 12. 20.