본문 바로가기
728x90
반응형

개발일지/Unreal&C++10

[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.
[C++] 가상 함수와 비 가상 함수 가상함수는 다형성을 구현하는 핵심 메커니즘으로, 객체지향 프로그래밍에서 중요한 역할을 한다.비 가상함수는 성능이 중요한 경우에 선호되며, 가상함수는 유연한 설계가 필요한 경우에 사용된다.이는 C++에서 중요한 개념이다. 호출 방식비 가상 함수정적 바인딩을 사용한다.(static binding)컴파일 시간에 어떤 함수를 호출할 지 결정된다.(함수 주소가 컴파일 시 결정됨)객체의 선언된 타입을 기준으로 함수가 호출된다.가상 함수동적 바인딩을 사용한다.(dynamic binding)런타임에 어떤 함수를 호출할지 결정된다.객체의 실제 타입을 기준으로 함수가 호출된다.메모리 구조비 가상 함수클래스의 모든 객체가 함수를 공유한다.별도의 메모리 공간에 위치하며, 객체 내부에 존재하지 않는다.가상 함수가상함수 테이블을.. 2025. 3. 18.
[Unreal] 게임 플레이 프레임워크 게임 플레이 프레임 워크액터레벨에 배치하거나 스폰할 수 있는 오브젝트의 기본 클래스액터의 이동방식, 렌더링 방식을 제어하는데 사용할 수 있는 액터컴포넌트 컬렉션이 포함될 수 있다.플레이 도중 네트워크를 통해 프로퍼티 및 함수 호출의 리플리케이션 지원카메라플레이어가 월드를 보는 방식. 플레이어의 시점.플레이어가 월드를 보는 위치와 방향을 계산플레이어 컨트롤러카메라 클래스 지정카메라 액터 인스턴스화폰플레이어 혹은 AI가 제어할 수 있는 모든 액터의 베이스 클래스기본적으로 컨트롤러와 폰은 1:1대응관계컨트롤러는 하나의 폰만 제어가능컨트롤러폰(부모가 폰인 모든)클래스에 빙의하여 동작을 제어하는 비물리적인 액터플레이어 컨트롤러는 인간 플레이어가 폰을 제어하는데 사용.AI컨트롤러는 자신이 제어하는 폰의 인공지능을 .. 2025. 3. 18.
[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.
728x90
반응형