UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 11. 25. 18:39[Part1] 8.언리얼C++ 설계(2)-컴포지션

언리얼 오브젝트의 컴포지션 컴포지션(Composition) 객체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지보수가 어려움. 컴포지션은 객체 지향 설계에서 Has-A 관계를 구현하는 설계 방법 컴포지션의 활용 복합적인 기능을 가진 거대한 클래스를 효과적으로 설계하는데 유용하게 사용할 수 있음. 아래 코드는 어떤 사람이 카드를 소유하는 개념을 컴포지션을 사용해서 구현한 예시 class Card { public: CarD(int InId) : Id(InId) {} int Id = 0; }; class Person { public: Person(Card InCard) : IdCard(InCard) {} protected: Card IdCard; }; 모던 객체 설계 기법과 컴포지션 좋은 객..

UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 11. 12. 18:03[Part1] 7.언리얼C++ 설계(1)-인터페이스

언리얼 C++ 인터페이스 인터페이스란? 객체가 반드시 구현해야 할 행동을 지정하는데 활용되는 타입 다형성(Polymorphism)의 구현, 의존성이 분리(Decouple)된 설계에 유용하게 활용. 언리얼 엔진에서 게임 콘텐으를 구성하는 오브젝트의 설계 예시 월드에 배치되는 모든 오브젝트. 안 움직이는 오브젝트를 포함(Actor) 움직이는 오브젝트(Pawn) 길찾기 시스템을 반드시 사용하면서 움직이는 오브젝트 ⇒ (INavAgentInterface 인터페이스를 구현한 Pawn) 예제를 위한 클래스 다이어그램 수업에 참여하는 사람과 참여하지 않는 사람의 구분 수업에 반드시 참여해야 하는 학교 구성원: 학생, 선생 수업에 참여하지 않는 학교 구성원: 교직원 수업 행동에 관련된 인터페이스: ILessonInte..

UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 11. 12. 16:59[Part1] 6.언리얼 오브젝트 리플렉션 시스템 2

실습 예제를 위한 클래스 다이어그램 지난 프로젝트에 이어서 예제 구현 어떤 학교에서 학생과 교수가 함께 수업하는 상황의 구현 학교 정보는 GameInstance에서 지정 UObject를 상속받는 3개의 클래스 인물 클래스 Person 학생 클래스 Student 선생 클래스 Teacher 언리얼 오브젝트의 속성과 함수 클래스에 설정할 프로퍼티 정보 Person에는 DoLesson이라는 가상 함수가 있음. Student의 DoLesson은 수업을 듣는 행동 Teacher의 DoLesson은 수업을 가르치는 행동 1. `.generated.h` 헤더 `#Include`는 제일 밑에 있어야한다. (그렇지 않으면 컴파일 시 에러) 2. `TEXT()`의 포맷으로 `FString`을 넘길때는 앞에 `*(포인터)`를..

[Part1] 5.언리얼 오브젝트 리플렉션 시스템 1
UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 11. 5. 18:19[Part1] 5.언리얼 오브젝트 리플렉션 시스템 1

언리얼 오브젝트의 특징 언리얼 오브젝트의 리플렉션 시스템 🔗언리얼 리플렉션 시스템 리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능. C++ 는 어떠한 형태의 리플렉션도 지원하지 않는다. 언리얼에서는 자체 리플렉션 시스템을 구축 함. UENUM(), UCLASS(), USTRUCT(), UFUNCTION(), UPROPERTY()매크로를 클래스에 달아주면 작동 UPROPERTY()매크로를 붙이지 않은 멤버 변수는 언리얼 엔진의 자동 메모리 관리(GC)에 포함되지 않는다. 따라서 개발자가 직접 메모리 관리를 해줘야한다. 언리얼 오브젝트의 구성 언리얼 오브젝트에는 특별한 프로퍼티와 함수를 지정할 수 있음. 관리되는 클래스 멤벼 변수: UPROPERTY() 관리되는 클레스 멤버 ..

[Part1] 3. 언리얼 C++ 기본 타입과 문자열
UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 10. 29. 00:19[Part1] 3. 언리얼 C++ 기본 타입과 문자열

🚩강의 목표 언리얼 환경에서 알아두어야 할 기본 타입과 고려할 점 캐릭터(Char) 인코딩 시스템에 대한 이해 언리얼 C++이 제공하는 다양한 문자열 처리 방법과 내부 구성 이해 기본 타입 왜 언리얼은 기본 타입을 따로 지정하는가? 1970년대에 개발되서 아직도 사용 중인 C++ 언어 시대에 따라 발전한 하드웨어 사양 플랫폼 파편화(Platform Fragmentation) C++ 최신 규약에서 int는 최소 32비트를 보장하도록 규정되어 있음. 특정 플랫폼에서는 64bit로 해석될 수 있음. 따라서 데이터를 저장할 때 int타입의 크기를 확신할 수 없음 후발 언어 C#의 경우 4바이트(32비트)인 int32로 명확히 정의돼있음 게임 제작의 특징 데이터 정보가 명확해야 한다. 단일 컴퓨터에서 최대 퍼포먼..

[Part1] 2. 언리얼 C++ 코딩 표준
UE5/이득우의 언리얼 프로그래밍 공부 노트 2023. 10. 26. 23:42[Part1] 2. 언리얼 C++ 코딩 표준

📢언리얼 엔진은 자체적으로 코딩 표준을 정했기 때문에 기존 C++ 코딩 방법을 버리고 언리얼 엔진 코딩 표준을 따라야 함 🔗언리얼 코딩 표준 문서 링크 코딩 표준 기존에 확립된 표준 및 모범 사례를 준수하여 유지보수 가능한 코드를 작성합니다. docs.unrealengine.com 언리얼 C++ 표준 요약 1. 클래스 체계 public 인터페이스를 먼저 선언하고 private 인터페이스를 선언 해야한다. 2. 명명 규칙 언리얼 엔진은 Pascal Case만을(변수 이름도 포함) 사용한다. Health, UPrimitiveComponent → 🆗 lastMouseCoordinates, delta_coordinates → ❌ 타입 이름에는 대문자로 이루어진 접두사를 포함하여 변수 이름과 구분한다. UObje..

image