본문 바로가기
728x90
반응형

UnReal7

[Unreal] 리플렉션(Reflection)? 작동 원리 및 장단점 언리얼 엔진의 리플렉션(Reflection)은 프로그램이 런타임에 클래스, 구조체, 함수, 멤버 변수 등 객체의 메타데이터를 조사하고 조작할 수 있는 시스템이고 언리얼 엔진의 핵심 기능이다.엔진은 리플렉션 시스템에 의존하므로, 언리얼 엔진에서 효율적으로 개발하려면 사실상 사용이 필수적이다.에디터, 블루프린트, 직렬화(Serialization), 네트워크 리플리케이션 등 다양한 시스템에서 사용된다. 리플렉션의 주요 목적런타임 타입 정보 접근실행 중 특정 객체의 클래스 타입 정보 확인.   - 예: `GetClass()`를 통해 클래스 정보를 조회.동적 객체 생성메타데이터 접근 및 조작변수와 함수의 속성 및 설명을 코드에서 활용.   - 예: `UPROPERTY()`와 같은 매크로를 통해 변수에 메타데이터를.. 2025. 4. 4.
[Unreal] 언리얼 인터페이스, 그리고 장/단점 (Interface) C++에는 언어 자체적으로 인터페이스라는 개념이 존재하지 않는다. 하지만 언리얼 엔진에서는 인터페이스를 구현한다.이는 언리얼 엔진의 객체 지향 설계와 리플렉션 시스템을 활용하여 게임 개발의 유연성과 확장성을 높이기 위한 것.언리얼 인터페이스는 다양한 기능을 정의하고, 이를 여러 클래스에서 구현할 수 있도록 하는 도구라고 생각하면 된다.C++에 인터페이스가 없는 이유인터페이스가 있는 다른 언어들(C#, Java..)는 C++보다 이후에 나왔다. 더 웰메이드 언어라고 볼 수 있다.(안전하다는 얘기다. 안좋게 보면 구조적인 제약이 있고, 성능이 이전 언어들에 비해 떨어진다.)C++은 계속해서 업데이트되고 있으나, 기본적으로 다중상속을 지원하기 때문에 인터페이스와 유사한 기능을 구현할 수 있다. (아래 예시 참.. 2025. 4. 3.
[Unreal] 오브젝트 그리고 CDO(Class Default Object), generated.h, GENERATED_BODY 언리얼 오브젝트의 베이스 클래스는 UObject.UClass매크로는 UObject에서 파생된 클래스에 태그를 지정하여 UObject처리 시스템이 인식하도록 할 수 있다. 각 UClass는 CDO라는 하나의 오브젝트를 유지한다. 기본적으로 클래스 생성자에 의해 생성되고, 이후에는 수정되지 않는 디폴트 템플릿 오브젝트이다.UClass와 CDO는 보통 읽기 전용이지만 주어진 오브젝트 인스턴스에 대해 GetClass()함수를 통해 엑세스 할 수 있다.UClass* RuntimeClass = GetClass();RuntimeClass->GetDefaultObject(); UObject는 모든타입의 함수 혹은 멤버 변수를 가질 수 있다. 언리얼이 이런 변수나 함수를 인식하고 조작하려면 특수 매크로로 표시하고 특정 .. 2025. 4. 1.
[Unreal] 서브 레벨 구성 및 스트리밍 레벨 로드 Unity의 Scene Addictive와 비슷하다고 생각하면 된다.서브레벨 구성SubLevel1을 Level로 만들고, SubLevel1을 연다.Level을 Unlit으로 설정한 후 Window->Place Actors를 누른다.레벨에 Shapes들을 배치한다.폴더로 subLevel 정의를 한다. 같은 레벨을 2개 복사한 후 MainLevel을 만든다.SubLevel2와3의 폴더 명을 변경한다.MainLevel에 합쳤을 때, 폴더 명이 같으면 서브레벨을 나눈 의미가 없이, 같은 폴더 내에 배치된다.Main Level 배치MainLevel을 열고 place actors에 light검색 후 directional light를 추가한다.(unlit -> lit으로 변경한다.)우측 상단의 Levels의 add .. 2025. 3. 18.
[Unreal] Blueprint를 활용한 물체 충돌 구현, 효과 주기 시작하기 앞서언리얼은 유니티와 다르게 엔진이 꽤..자주 꺼지는 편인 것 같다.힘들게 만든 작업물을 날리고 싶지 않다면 컴파일, 저장 습관을 기르도록 해야한다.우측 하단에 저장이 되어있는지 저장이 안되어있는지 친절하게 알려주니 자주 확인하며 저장하는 습관을 기르자.저장을 하지않으면 메모리에만 쌓이고, 엔진이 꺼지면서 메모리도 같이 죽어 내용물이 다 날라가는.. 슬픈 광경을 볼 수 있다. 블루프린트 기본콘텐츠 브라우저에 새로운 폴더(Blueprints)를 생성한다.Blueprints 폴더 안에서 우클릭 후 Blueprint class를 선택한다.Actor클래스를 선택한다. 다른 클래스들은 포스팅을 업데이트 하면서 채워가겠다.언리얼 네이밍 규칙 명명에 따르면 블루프린트는 BP_의 접두사를 가져야 하므로, BP.. 2025. 3. 18.
[Unreal] 머테리얼(Material)/PBR (v5.4) Material이란?사실은 쉐이더다. 공식 문서에서는 씬에서의 오브젝트 표면 프로퍼티 정의라고 한다.언리얼 엔진의 쉐이더는 HLSL로 작성되어있으나 언리얼 에디터에서는 비주얼스크립팅으로 머테리얼을 만들 수 있다.비주얼 스크립팅으로 노드를 조합하여 메인 머테리얼 노드에 입력하여 만든다.위와 같이 조합하여 만든 결과는 엔진 내부에서 HLSL로 변환되어 사용된다.Material 생성머테리얼은 에셋 클래스이므로 콘텐츠 브라우저에서 생성해야 한다.콘텐츠 브라우저의 Content폴더 우클릭 하여 새 폴더를 생성하고 이름을 Material이라고 짓는다.Material 폴더에서 다시 우클릭하여 Material 에셋을 생성한다. 이름은 M_MaterialTest로 짓는다.언리얼은 네이밍 규칙이 있고 그것을 따르는게 언리.. 2025. 3. 14.
728x90
반응형