본문 바로가기

Unreal/[서적] 언리얼5 이득우님 인프런115

Ch 11. 구조체와 Map 11.1 언리얼 구조체 특징과 선언 11.1-1 USTRUCT - 데이터 저장/전송에 특화된 가벼운 개체 - 대부분 GENERATED_BODY 매크로를 선언해줌. 리플렉션/직렬화와 같은 유용한 기능을 지원함. GENERATED_BODY를 선언한 구조체는 UScriptStruct 클래스로 구현됨. 이경우 제한적으로 리플렉션을 지원함. 속성 UPROPERTY만 선언할 수 있고, 함수 UFUNCTION은 선언할 수 없음. - 언리얼 엔진의 구조체 이름은 F로 시작함. - 대부분 스택 메모리에 저장됨. 힙 메모리 할당(포인터 연산) 없음. 저장/전송에 특화되기 때문. NewObject API를 사용할 수 없음. 11.1-2 언리얼 리플렉션 관련 계층 구조 11.1-3 언리얼 구조체 실습 // Student.h .. 2023. 5. 13.
Ch 10. Array and Set 10.1 언리얼 컨테이너 라이브러리 10.1-1 언리얼 컨테이너 라이브러리 - 언리얼 엔진이 자체 제작해 제공하는 자료구조 라이브러리 줄여서 UCL이라고도 함. - 언리얼 오브젝트를 안정적으로 지원하고 다수의 오브젝트 처리에 유용함. 실제 게임 제작에는 TArray/TSet/TMap이 유용하게 사용됨. 10.1-2 C++ STL Vs. UCL - STL은 범용적임. UCL은 언리얼 엔진에 특화되어 있음. STL은 호환성이 높음. UCL은 언리얼 오브젝트에 특화됨. STL은 많은 기능이 구현되어 있어서 컴파일 시간이 오래 걸림. UCL은 게임 제작에 최적화되어 있음. 10.1-3 TArray, TSet, TMap - TArray STL의 Vector와 유사함. 오브젝트를 순서대로 담아 관리하는 용도. - .. 2023. 5. 12.
Ch 09. 델리게이트 9.1 느슨한 결합 9.1-1 강한 결합과 느슨한 결합 - 강한 결합(Tight Coupling) 클래스들이 서로 의존성을 가지는 경우. ex. Card 클래스가 없다면 Person 클래스가 만들어 질 수 없는 경우 Person 클래스는 Card 클래스에 대한 의존성을 가진다고 함. - 느슨한 결합(Loose Coupling) 실물에 의존하지 말고 추상적 설계에 의존하라.(DIP 원칙) ex. Person은 왜 Card가 필요한가? 출입을 확인해야 하기 때문. 출입에 관련된 추상적인 설계를 만들어보자. ICheck를 상속 받은 새로운 카드 인터페이스를 통해 해결하고자 함. 나중에 새로운 Card 클래스가 생성되도, ICheck 인터페이스를 상속 받는 방식. - 이러한 느슨한 결합 구조는 유지 보수를 손쉽.. 2023. 5. 12.
Ch 08. 컴포지션 8.1 컴포지션 8.1-1 컴포지션 개요 - 개체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지보수가 어려움. 상속의 깊이가 길고, 최상위 부모 클래스의 코드가 변경되면 그 하위 모든 자식 클래스가 영향을 받기 때문. - 컴포지션은 개체 지향 설계에서 Has-A 관계를 구현하는 설계 방법. 복잡한 기능을 가져야 하는 클래스를 효과적으로 설계하는데 유용함. - 모던 개체 설계 기법의 핵심은 상속을 단순화하고, 단순한 기능을 가진 개체를 조합해서 복잡한 개체를 구성하는 것. 그래서 컴포지션은 아주 중요함. 8.1-2 언리얼 엔진에서의 컴포지션 구현 방법 - 하나의 언리얼 오브젝트에는 항상 클래스 기본 오브젝트가 있음. - 언리얼 오브젝트 간의 컴포지션은 어떻게 구현할 것인가? CDO에 미.. 2023. 5. 11.