Unreal Engine(22)
-
Garbage Collection(가비지 컬렉션)
언리얼을 처음 사용 할 때 UROPERTY() 같은 것은 사용하였는데왜 사용하는지는 잘 몰랐다. 메모리 관리에 있어서 가비지 컬렉터가 어떠한 방식으로 돌아가는지도 잘 몰랐었다. UPROPERTY() 리플렉션 시스템에 의해 관리된다.리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능입니다.코드 작성을 하다보면 UPROPERTY, UCLASS, USTRUCT 등의 매크로를 사용하게 되는데이 코드들은 리플렉션이 해당 클래스, 변수 함수를 감지 할 수 있게 해줍니다.1#include "FileName....geterated.h"cs이 헤더는 아마 C++클래스를 새로 만들 때 자동으로 들어가는 모습을 볼 수 있습니다. 이 헤더가 있으면 이제 UPROPERTY, UFUNCTION, US..
2024.06.28 -
커스텀 엑터 생성하기
C++으로 작성한 커스텀 액터 클래스를 블루프린트에서 사용하기 Actor 클래스를 상속하여 C++에서 커스텀 액터 클래스를 생성하면 블루프린트에서는 SpawnActorFromClass 노드를 사용하여 일반 블루프린트로 만든 액터와 다를 바 없이 생성하여 사용할 수가 있다 언리얼 엔진을 실행하고 C++ 프로젝트를 생성한다 Content Browser 에서 마우스 우측 > 새 C++ 클래스 > 부모 클래스 선택 창에서 Actor 를 선택하고 [다음] 버튼을 누른다 파일 저장 경로를 선택하는 창에서 [클래스 생성] 버튼을 누르면 클래스가 생성되어 언리얼에 컴파일 되고 이어서 Visual Studio 가 실행되면서 생성된 클래스 헤더파일과 소스파일이 편집가능한 상태가 된다 필요한 속성이나 함수를 추가하고 정의한..
2024.06.26 -
메모리 관리, 스마트 포인터, 디버깅
메모리 관리는 안전성이 높고 버그가 없는 프로그램을 작성하는 과정에서 늘 중요한 주제다. 허상 포인터(dangling pointer)는 메모리에서 지워진 대상을 참조하는 포인터이며 추적하기 어려운 버그를 만드는 대표적인 사례다. UObject 참조 카운팅 시스템은 UObject 클래스로부터 파생된 액터와 클래스의 메모리를 관리하는 기본적인 수단으로이를 통해 UE 프로그램 내에서 메모리가 관리된다. UObject에서 파생되지 않은 커스텀 c++ 클래스를 작성한다면 TSharedPtr / TWeakPtr 참조 카운팅 클래스를 활용하면 된다.이 클래스들을 활용하면 더 이상의 참조가 없을 때 자동으로 오브젝트를 삭제해준다. Actor 클래스의 파생이 아닌 모든 UObject 파생 오브젝트를 생성할 때는 항상 ..
2024.06.26 -
클래스 생성
이번 글은 ue 와 블루프린트 편집가와 잘 통합되는 c++ 클래스와 구조체의 생성 방법을 설명하는데 초점을 둔다. UObject에서 파생된 UCLASS는 U 로 시작하는 이름이어야 한다.Actor에서 파생된 UCLASS는 A로 시작하는 이름이어야 한다.UObject에서 직접 파생된 오브젝트는 UStaticMeshs와 같은 시각적 표현 요소가 포함되어있어도 레벨에 배치 할 수 없다.오브젝트를 레벨에 배치하고싶다면 Actor 클래스에서 파생되거나 그 상속 아래 계층에 있어야 한다. UE는 UCLASS를 위한 많은 양의 코드를 생성하고 관리한다.이 코드는 UPROPERTY, UFUNCTION, UCLASS 매크로와 같은 UE 매크로를 사용한 결과로 생선된다생성된 코드는 UserProfile.generated...
2024.06.26