묻공러
'게임 엔진/[코드조선] 언리얼' 카테고리의 글 목록 (4 Page)

게임 엔진/[코드조선] 언리얼

게임 엔진/[코드조선] 언리얼

언리얼 Actor - Actor 클래스 생성 및 내부 구조

Actor 클래스 생성 방법Content Browser에서새 C++ 클래스 > Actor 부모 클래스 > “STorch” 로 생성하고경로는 본인이 원하는 위치에 설정하면 된다 Actor 클래스 블루프린트 에셋 생성본인이 원하는 경로 > 새 Blueprint 에셋 > STorch 부모 클래스 > “BP_Torch” Actor 클래스 파일 내부// STorch.h#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "STorch.generated.h"class UBoxComponent;class UStaticMeshComponent;class UPointLightComponent;class UParticleSystemComp..

게임 엔진/[코드조선] 언리얼

언리얼 기본 요소 - World

World게임이 진행되는 레벨과 모든 액터 그리고 시간, 물리 등의 오브젝트 집합을 의미한다Toolbar > Settings > World Settings를 통해 설정을 할 수 있다Level가상 세계를 담당하는 3차원의 공간으로 Viewport를 통해 보이는 공간이다단위는 cm이다플레이 버튼을 누르면 Outliner에 기존에 레벨을 구성하던 액터(흰색 이름)와동적으로 생성된 액터(노란색 이름)들이 구분되어 표시된다추가적으로, 레벨에 사용되는 에셋은 .umap 에셋이다 Actor월드를 구성하는 단위 개체이다 Time가상 공간에서 흐르는 시간으로 단위는 초이다또한, 시간이 흐르는 속도를 조절할 수도 있다 Physics월드 공간에 배치된 액터들 사이의 작용을 의미한다해당 액터에 Collision 정보가 있다면..

게임 엔진/[코드조선] 언리얼

언리얼 기본 요소 - Actor

Actor Actor 개체는 월드에 존재하고 트랜스폼이 필수적으로 붙게 된다 상황에 맞는 구체적인 게임 로직을 소스코드로 개발자가 C++ 혹은 블루프린트로 작성한다 Actor의 기능 - 시각적 기능: 어떻게 보일 것인가ex) 스태틱 메시, 애니메이션, …  - 물리적 기능: 액터들 간의 물리 작용 처리는 어떻게 할 것인가ex) 충돌, …  - 이동 기능: 액터가 어떻게 움직일 것인가 언리얼은 위를 포함한 다양한 액터의 기능을 컴포넌트 구조로 선택해서 집어넣을 수 있다

게임 엔진/[코드조선] 언리얼

언리얼 기본 요소 - Component 상속 구조

컴포넌트 상속 구조액터 컴포넌트는트랜스폼 속성이 필수적으로 들어가는 액터 컴포넌트와트랜스폼 속성이 필요 없어서 포함되지 않은 액터 컴포넌트로 구분된다 USceneComponent는 UActorComponent를 상속받고 트랜스폼 속성이 추가된 컴포넌트이고UStaticMeshComponent도 USceneComponent 를 상속받는다반면UMovementComponent들은 UActorComponent를 상속받고 트랜스폼 속성이 없는 컴포넌트이고그 이유는 액터를 이동 및 회전시키는 방법과 규칙만을 담고 있기 때문이다 이처럼 Transform 속성 포함 여부에 따라 Component들은실제 블루프린트에서도 구분되어 표시된다

게임 엔진/[코드조선] 언리얼

언리얼 기본 요소 - MovementComponent

Movement Component언리얼에서 제공하는 무브먼트 컴포넌트로 아래와 같다- FloatingPawnMovement중력의 영향을 받지 않는 액터의 움직임을 제공. 입력에 따라 자유롭게 움직임 - RotatingMovement지정한 속도로 액터를 회전 - InterpMovement지정한 위치로 액터를 이동 - ProjectileMovement액터에 중력 영향을 주어서 탄도학적인 움직임을 제공. 총알, 미사일 등 - CharacterMovementComponent캐릭터 전용 움직임 컴포넌트걷기 뿐만 아니라 수영, 쪼그리기와 같이 다양한 움직임 가능

게임 엔진/[코드조선] 언리얼

언리얼 기본 요소 - Component

컴포지션 객체 지향 프로그래밍에서 상속(Is-A)만으로 구조를 짜면 유지보수가 어렵다그 이유는 상속이 깊은 경우에 최상위 부모 클래스의 변경이 그 하위 모든 자식 클래스에게 영향을 주기 때문이다따라서, 컴포지션은 Has-A 관계를 구현하는 설계 방법으로 유지보수가 쉽다기능이라는 개념을 상속으로 구현한다면, 많은 기능을 가지는 액터는 유지보수가 어렵지만기능이라는 개념을 컴포지션으로 구현한다면, 많은 기능을 쉽게 탈착 하며 유지보수가 쉬워진다언리얼 엔진의 컴포지션 액터를 구현할 때 다양한 기능을 유연하게 탈착할 수 있도록각 기능을 규격화한 것이 컴포넌트이다ex) 스태틱 메시 컴포넌트, 박스 컴포넌트, 무브먼트 컴포넌트, …  루트 컴포넌트 액터는 여러 개의 컴포넌트를 가질 수 있고그 컴포넌트들 중에서도 대표..

게임 엔진/[코드조선] 언리얼

언리얼 자료구조 - TArray, TSet, TMap

Unreal Container Library (UCL)언리얼 엔진이 자체적으로 제공하는 자료구조 라이브러리로언리얼 오브젝트를 안정적으로 지원하고 다수의 오브젝트 처리에 유용하다다양한 자료구조 중 TArray / TSet / TMap이 주로 사용된다언리얼에서도 C++ STL을 사용할 수는 있으나, 권장하지 않는다TArray, TSet, TMap TArray: STL의 Vector와 유사하다언리얼 오브젝트를 순서대로 담아 관리한다 관련 문서:https://dev.epicgames.com/documentation/ko-kr/unreal-engine/array-containers-in-unreal-engine?application_version=5.0 Array Containers In Unreal Engine..

게임 엔진/[코드조선] 언리얼

언리얼 문자열 - FName, FText

FName과 FText FString은 FName과 FText로 변환해서 사용이 가능하다   FName 사람은 문자열로 애셋을 관리하는 게 직관적이다그러나 문자열을 그대로 사용하면 연산량이 늘어나는 문제가 있다따라서,문자열로 관리를 하되, 내부적으로는 해시값으로 변환해서 에셋 관리를 위한 문자열 클래스가 FName 클래스이다주의점은대소문자 구분이 없고 한번 선언되면 int32와 같은 정수로 변환되는 단점이 있다즉, 다시 원본 문자열로의 변경이 불가능하다FText 다국어 지원을 위한 문자열 클래스로 UI에서 자주 사용한다key와 value 쌍과 같이 FText는 key처럼 동작한다"Hello - 안녕"과 같은 별도의 문자열 테이블 정보가 요구된다게임 빌드 시에 자동으로 다양한 국가별 언어로 변환되고로컬라이..

게임 엔진/[코드조선] 언리얼

언리얼 문자열 - TCHAR, FString

기존 문자열 인코딩 방식기존 문자열 인코딩 방식은 아래와 같다Single-Byte: ANSI, ASCII, … Multi-Byte: EUC-KR, CP949, … Unicode: UTF-8, UTF-16, …언리얼의 문자열 인코딩 방식 언리얼은 내부적으로 UTF-16 방식을 채택했다파일을 읽을 때도 UTF-16 방식을 기본으로 읽는다단, 소스코드에 한글이 꼭 필요한 경우에는 파일의 인코딩을 UTF-8로 변환해야 한다TEXT() 매크로 TEXT() 매크로를 통해 문자열을 작성하면자동으로 언리얼에서 UTF-16을 위한 문자열로 변환해 준다 TCHAR vs. FStringUE_LOG(LogTemp, Log, TEXT("헬로, 언리얼!"));// File > Save as ... > Save 버튼 우측 역삼각형..

게임 엔진/[코드조선] 언리얼

언리얼 오브젝트 기능 - 델리게이트

발행-구독 패턴 발행자와 구독자, 그 사이에 중개인이 있는 패턴과 같다발행자는 중개인에게 이벤트가 발생되었음을 알리고중개인은 구독자에게 이벤트가 발생되었음을 알린다발행자와 구독자가 서로를 모르지만, 중개인을 통해 이벤트의 발생과 소비가 이루어진다발행-구독 패턴의 장단점 델리게이트를 통해 상호 의존성이 줄어든다발행자는 중개인과의 통신만 연결되면 되고 구독자와는 연결을 하지 않는다구독자도 중개인과의 통신만 연결되면 되고 발행자와는 연결을 하지 않는다이는 한쪽에 문제가 생겨도 다른 쪽에 영향을 주지 않는 것을 의미하고유지보수가 쉬워진다하지만, 서로 반대 쪽의 상황을 알 수가 없기에무슨 일이 발생되는지 자세히 파악할 수 없는 단점이 있다언리얼에서의 발행-구독 패턴 언리얼에서는 델리게이트 기능을 통해 해당 패턴을..