본문 바로가기

공부

(83)
[Study] Part 1 - 언리얼 컨테이너 라이브러리 II - 구조체와 Map (11/15) 정리구조체와 언리얼 컨테이너 라이브러리TArray, TSet, TMap 컨테이너 라이브러리 내부 구조와 활용 방법언리얼 구조체의 선언 방법TSet과 TMap에서 언리얼 구조체를 사용하기 위해 필요한 함수의 선언과 구현 방법    언리얼 구조체 UStruct데이터 저장/전송에 특화된 가벼운 객체대부분 GENERATED_BODY매크로를 선언해준다.리플렉션, 직렬화와 같은 유용한 기능을 지원함GENERATED_BODY를 선언한 구조체는 USriptStruct클래스로 구현됨이 경우 제한적으로 리플렉션을 지원함속성 UPROPERTY만 선언할 수 있고 함수 UFUNCTION은 선언할 수 없음언리얼 엔진의 구조체 이름은 F로 시작함대부분 힙 메모리 할당(포인터 연산)없이 스택 내 데이터로 사용됨NewObject AP..
[Study] Part 1 - 언리얼 컨테이너 라이브러리 I - Array와 Set (10/15) 정리언리얼 컨테이너 라이브러리TArray, TSet 컨테이너 라이브러리 내부 구조와 활용 방법디버그 빌드를 사용해 메모리 정보를 확인하는 방법두 컨테이너 라이브러리가 가진 특징의 이해  언리얼 컨테이너 라이브러리언리얼 엔진이 자체 제작해 제공하는 자료구조 라이브러리언리얼 C++은 다양한 자료구조 라이브러리를 직접 만들어 제공하고 있음게임 제작에 유용하게 사용되는 대표적인 라이브러리들TArray오브젝트를 순서대로 담아 효율적으로 관리하는 용도TMap중복되지 않는 요소로 구성된 집합을 만드는 용도TSet키, 밸류 조합의 레코드를 관리하는 용도C++ STL과 언리얼 컨테이너 라이브러리의 차이점C++ STL은 범용적으로 설계되어 있음C++ STL은 표준이기 때문에 호환성이 높다.C++ STL에는 많은 기능이 엮..
[Study] Part 1 - 언리얼 C++ 설계 Ⅲ - 델리게이트 (9/15) 델리게이트C++ 오브젝트 상의 멤버 함수를 가리키고 실행시키는 데이터 유형입니다.dev.epicgames.com 정리언리얼 C++ 델리게이트느슨한 결합(Loose Coupling)이 가지는 장점향후 시스템 변경 사항에 대해 손쉽게 대처할 수 있음느슨한 결합(Loose Coupling)으로 구현된 발행 구독 모델의 장점클래스는 자신이 해야 할 작업에만 집중할 수 있음외부에서 발생한 변경 사항에 대해 영향받지 않음개까지 지원자신의 기능을 확장하더라도 다른 모듈에 영향을 주지 않음언리얼 C++의 델리게이트 선언 방법과 활용몇 개의 인자를 가지는가?어떤 방식으로 동작하는가? (MULTICAST 사용 유무 결정)언리얼 에디터와 함께 연동할 것인가? (DYNAMIC 사용 유무 결정)이를 조합해 적합한 매크로 선택데..
[ComfyUI] ComfyUI Reactor 설치 오류 ReActor - Face Swap 기능 설치할때 파일이 정상적으로 들어가 있어도 불러와지지 않는 현상
[Study] Part 1 - 언리얼 C++ 설계Ⅱ - 컴포지션 (8/15) 정리컴포지션을 활용한 언리얼 오브젝트 설계언리얼 C++은 컴포지션을 구현하는 독특한 패턴이 있다.클래스 기본 객체를 생성하는 생성자 코드를 사용해 복잡한 언리얼 오브젝트를 생성할 수 있음언리얼 C++ 컴포지션의 Has-A 관계에 사용되는 용어내가 소유한 하위 오브젝트 : Subobject나를 소유한 상위 오브젝트 : Outer언리얼 C++이 제공하는 확장 열거형을 사용해 다양한 메타 정보를 넣고 활용할 수 있다.언리얼 C++의 컴포지션 기법은 게임의 복잡한 객체를 설계하고 생성할 때 유용하게 사용된다.    컴포지션(Composition)객체 지향 설계에서 상속이 가진 Is-A 관계만 의존해서는 설계와 유지보수가 어려움컴포지션은 객체 지향 설계에서 Has-A 관계를 구현하는 설계 방법컴포지션의 활용복합적..
[Study] Part 1 - 언리얼 C++ 설계 Ⅰ - 인터페이스 (7/15) 정리언리얼 C++ 인터페이스클래스가 반드시 구현해야 하는 기능을 지정하는데 사용함C++은 기본적으로 다중상속을 지원하지만, 언리얼 C++의 인터페이스를 사용해 가급적 축소된 다중상속의 형태로 구현하는 것이 향후 유지보수에 도움된다.언리얼 C++인터페이스는 두 개의 클래스를 생성한다.언리얼 C++인터페이스는 추상 타입으로 강제되지 않고, 내부에 기본 함수를 구현할 수 있다.언리얼 C++인터페이스를 사용하면, 클래스가 수행해야 할 의무를 명시적으로 지정할 수 있어 좋은 객체 설계를 만드는데 도움을 줄 수 있다.   언리얼 C++ 인터페이스인터페이스란?객체가 반드시 구현해야 할 행동을 지정하는데 활용되는 타입다형성(Polymorphism)의 구현, 의존성이 분리(Decouple)된 설계에 유용하게 활용언리얼 ..
[ComfyUI] ComfyUI error case - SetNode, GetNode ComfyUI를 가지고 놀다 다음과 같은 오류가 났다. SetNode, GetNode를 찾을수 없다는 내용의 오류였다. 해결방법은 다음과 같다.Install Custom Node > KJNodes Install
[Study] Part 1 - 언리얼 오브젝트 리플렉션 시스템 II (6/15) 정리언리얼 엔진의 기본 프레임웍은 리플렉션을 활용해 구축되어 있으므로 언리얼 엔진을 이해하기 위해서는 리플렉션 시스템을 이해하는 것이 필요함리플렉션 시스템을 사용해 언리얼 오브젝트의 특정 속성과 함수를 이름으로 검색할 수 있다.리플렉션 시스템을 사용해 접근 지시자와 무관하게 값을 설정할 수 있다.리플렉션 시스템을 사용해 언리얼 오브젝트의 함수를 호출할 수 있다.      언리얼에서 다른 클래스를 상속받더라도 generated.h파일이 가장 밑부분에 include 되어 있어야 한다. 아니면 에러가 발생한다.     cpp 파일의 include 순서도 해당 언리얼 오브젝트에 선언된 헤더가 가장 위쪽에 위치해 있어야 한다.MyGameInstance.h가 가장 위쪽에 있는 모습     클래스 내부의 Setter..