목록전체 글 (225)
그냥 게임개발자
https://docs.unrealengine.com/5.3/ko/unreal-object-handling-in-unreal-engine/ 클래스, 프로퍼티, 함수에 적합한 매크로를 마킹해 주면 UClass, UProperty, UFunction으로 변환됨. 이렇게 변환이 된 클래스, 프로퍼티, 함수 들을은 언리얼 엔진에 관리가 들어가기 시작된다. 이렇게 변환이 되면 좋은 점은 자동 프로퍼티 초기화 C++의 경우에는 생성자나 기본 Initializer를 통해서 초기화하지 않으면 쓰레기 값이 들어감 UPROPERTY() 마킹하는 경우네는 자동으로 값이 0으로 기본으로 채워진다. 레퍼런스 자동 업데이트 언리얼 시스템이 제공하는 자동 메모리 관리에 이점을 받을 수 있다 라는 것으로 이해. Serializati..
리플렉션 시스템 리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능. 이는 엄청나게 유용하고 언리얼 엔진 테크놀로지의 근간을 이룸 에디터의 DetailPanel, Serialization, GC, Network Reflication, Blueprint 등 다수의 시스템에 탑재된 것 C++은 어떠한 형태의 Reflection도 지원하지 않아, 언리얼에서는 자제척으로 c++ class, Struct, 함수, 멤버 변수, Enum 관련 정보를 수집, 질의, 조작하는 별도의 시스템이 구축되어 있다. 리플렉션은 '프로퍼티 시스템'이라고도 부른다, 이유는 '리플렉션'이라는 용어는 그래픽 용어이기도 하기 때문이다. Reflication 시스템은 옵션이다. Riflection 시스템에 보이..
https://docs.unrealengine.com/5.3/ko/objects-in-unreal-engine/ 언리얼의 오브젝트 베이스 클래스는 UObject이다. U는 Unreal Object의 접두사 U이다. UObject를 상속받아서 어떤 클래스를 선언하게 되면 그 클래스는 UnrealObject가 된다. 또한 클래스가 UnrealObject인지 지정하기 위해서는 UCLASS라는 매크로를 사용해서 태그 해주면 된다. 오브젝트 생성 C++에서는 new 키워드를 사용하여 클래스를 생성하는데 있어 UObject는 NewObject라는 키워드를 사용 CDO가 생성되는 시점 언리얼 에디터를 처음 킬 때 75% Initialize 부분에서 CDO가 생성 UObject에 제공되는 함수성 모든 경우에 이 시스템..
FName의 활용 언리얼이 제공하는 다양한 문자열 처리 FName : 에셋 관리를 위해 사용되는 문자열 체계. 대소문자 구분 없음.(FString으로 변환 할 수 있지만 대소문자를 구분하지 않기에 데이터가 깨짐) 한번 선언되면 바꿀 수 없음.(int로 변환됨) 가볍고 빠름. 문자를 표현하는 용도가 아닌 에셋 키를 지정하는 용도로 사용. 빌드시 해시값으로 변환됨 FText : 다국어 지원을 위한 문자열 관리 체계 일종의 키로 작용함 별도의 문자열 테이블 정보가 추가로 요구됨 게임 빌드 시 자동으로 다양한 국가별 언어로 변환됨 FName 클래스 https://docs.unrealengine.com/5.3/ko/fname-in-unreal-engine/ FName 다이내믹 머티리얼 인스턴스의 파라미터 변경, ..
TCHAR 배열을 사용한 문자열 출력 void UMyGameInstance::Init() { Super::Init(); static const TCHAR LogCharArray[] = TEXT("Hello Unreal"); UE_LOG(LogTemp, Log, LogCharArray); } TEXT는 기본적으로 TCHAR의 배열이다. UE5.1버전에서는 UE_LOG가 TCHAR 배열을 그냥 써도 오류가 나지 않았지만, UE5.2 이상 부터는 static const를 지정해줘야 한다. 만약 문자열 다양하게 조합하고 싶다면 TCHAR 배열이 아닌 FString을 사용 FString LogCharString = LogCharArray; UE_LOG(LogTemp, Log, TEXT("%s"), *LogChar..
https://docs.unrealengine.com/5.3/ko/character-encoding-in-unreal-engine/ 텍스트 포맷 텍스트와 스트링을 표현하는 데 사용할 수 있는 포맷을 이해하고 그에 따른 장단점을 이해하는 것은 프로젝트에 어떤 포맷을 사용할 것인지 결정하는 데 도움이 될 수 있다. ASCII 0, 9, 10, 13, 32 - 126를 포함한 캐릭터 ANSI ASCII와(서유럽 하이 ASCII 등) 현재 코드 페이지는 P4 서버에 바이너리로 저장 UTF-8, UTF-16 (ASCII 상위집합인) 특수 캐릭터 시퀀스를 사용하여 비-ANSI 캐릭터를 표현할 수 있는 단일 바이트로 구성된 스트링 바이너리의 경우 장점 내부 포맷이 정의되지 않음, 각 파일을 포맷에 관계없이 로드할 수..
int 후발 언어 C#의 경우 int타입이 있지만 4Byte인 int32로 명확히 정의되어 있음 언리얼은 int를 사용하지 안혹 int32를 사용 C++를 오랫동안 사용했던 언리얼 엔진 역시 int를 명확히 정의하기 위해 int32라는 데이터 타입을 사용 평균 int32를 주로 사용한다 데이터 통신 같은 바이너리 데이터를 주고 받을 떄는 uint8 바이트 정보를 사용하는 것이 일반적 Character TCHAR를 사용 float, double 국제 표준으로 4byte, 8byte로 결정되어 있기에 그대로 사용 bool 데이터 전송을 고려한 참/거짓 데이터지정으로 사용, bool은 크기가 명확하지 않다. 헤더에는 가급적 bool 대신 uint8 타입을 사용하되 Bit Field 오퍼레이터를 사용 참과 거짓..
언리얼엔진은 파스칼 케이싱의 규칙을 사용한다. 권장 예시) Health, UCameraComponent 권장하지 않는 예시) lastMouseCondition, delatSeconds Template 클래스 : 접두사 T UObject 클래스 : 접두사 U AActor 클래스 : 접두사 A Swidget 클래스 : 접두사 S Interface 클래스 : 접두사 I Enum 클래스 : 접두사 E bool 변수 : 접두사 b 그 외 대부분 클래스 : 접두사 F 구조체인 Typedef : 접두사 F UObject인 Typedef : 접두사 U