Unreal120 Ch 08. 컴포지션 8.1 컴포지션 8.1-1 컴포지션 개요 - 개체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지보수가 어려움. 상속의 깊이가 길고, 최상위 부모 클래스의 코드가 변경되면 그 하위 모든 자식 클래스가 영향을 받기 때문. - 컴포지션은 개체 지향 설계에서 Has-A 관계를 구현하는 설계 방법. 복잡한 기능을 가져야 하는 클래스를 효과적으로 설계하는데 유용함. - 모던 개체 설계 기법의 핵심은 상속을 단순화하고, 단순한 기능을 가진 개체를 조합해서 복잡한 개체를 구성하는 것. 그래서 컴포지션은 아주 중요함. 8.1-2 언리얼 엔진에서의 컴포지션 구현 방법 - 하나의 언리얼 오브젝트에는 항상 클래스 기본 오브젝트가 있음. - 언리얼 오브젝트 간의 컴포지션은 어떻게 구현할 것인가? CDO에 미.. 2023. 5. 11. Ch 07. 언리얼 인터페이스 7.1 언리얼 인터페이스 7.1-1 언리얼 C++ 인터페이스 개요 - 인터페이스란 객체가 반드시 구현해야 할 행동을 지정하는데 활용되는 타입 다형성(Polymorphism)의 구현, 의존성이 분리된(Decouple) 설계에 유용하게 활용됨. - 언리얼 엔진에서 게임 컨텐츠를 구성하는 오브젝트의 설계 예시 월드에 배치되는 모든 오브젝트(안움직이는 Actor, 움직이는 Pawn을 포함하는 상위개념) ex. 길찾기 시스템을 반드시 사용하면서 움직이는 오브젝트를 구현하고자 한다면 INavAgentInterface 인터페이스를 구현한 Pawn을 설계해야함. 7.1-2 언리얼 C++ 인터페이스의 특징 - 인터페이스를 생성하면 두 개의 클래스가 생성됨. U로 시작하는 타입 클래스/I로 시작하는 인터페이스 클래스 - .. 2023. 5. 11. Ch 06. 언리얼 리플렉션 2 6.1 언리얼 리플렉션 시스템 예제 확장 6.1-1 Person 클래스, Student 클래스, Teacher 클래스 - 새 C++ 클래스 > UObject 부모 클래스 > Person/Student/Teacher 클래스 생성 // Person.h #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "Person.generated.h" UCLASS() class OBJECTREFLECTION_API UPerson : public UObject { GENERATED_BODY() public: UPerson(); UFUNCTION() virtual void DoLesson(); const FString& GetNa.. 2023. 5. 10. Ch 05. 언리얼 리플렉션 5.1 언리얼 리플렉션 5.1-1 언리얼 리플렉션의 주요 특징 - 리플렉션은 런타임 중에 자기 자신을 조사하는 기능을 뜻함. 가비지 컬렉션, 리플리케이션, 시리얼라이즈 등의 기능들의 근간을 이룸. - 리플렉션은 언리얼 오브젝트만 가질 수 있음. 일반 C++ 오브젝트는 불가능. - 특정 매크로(UCLASS(), UPROPERTY(), UFUNCTION(), ...)를 프로퍼티나 함수에 작성하면 Unreal Header Tool이 컴파일 타임에 해당 정보를 수집함. - 단, UPROPERTY() 매크로로 지정되지 않은 멤버의 경우에는 언리얼 가비지 컬렉터에 의해 메모리 관리가 되지 않음에 주의. - UHT는 C++ 파서가 아님에 주의. 즉, C++ 소스코드를 읽고 컴파일을 진행하는 프로그램이 아님. 그래서 .. 2023. 5. 10. 이전 1 ··· 8 9 10 11 12 13 14 ··· 30 다음