unreal-engine-cpp-pro
Unreal Engine 5 C++ 개발 마스터
performant Unreal Engine 5 C++ 코드를 작성하려면 UObject 정리, 가비지 컬렉션, 리플렉션 매크로에 대한 이해가 필요합니다. 이 스킬은 프로덕션 환경에 바로 사용할 수 있는 게임 코드를 작성할 수 있도록 전문적인 가이드라인을 제공합니다.
스킬 ZIP 다운로드
Claude에서 업로드
설정 → 기능 → 스킬 → 스킬 업로드로 이동
토글을 켜고 사용 시작
테스트해 보기
"unreal-engine-cpp-pro" 사용 중입니다. Unreal Engine 5에서 UObject 포인터로 메모리 누수를 방지하려면 어떻게 해야 하나요?
예상 결과:
가비지 컬렉터가 추적할 수 있도록 항상 UPROPERTY()로 UObject 포인터를 표시하세요. GC를 반드시 통과해야 하는 객체의 경우 AddToRoot() 또는 TStrongObjectPtr을 사용하세요. EndPlay()에서 비 UProperty 참조를 정리하세요.
"unreal-engine-cpp-pro" 사용 중입니다. Unreal Engine C++ 클래스에 어떤 명명 규칙을 따라야 하나요?
예상 결과:
표준 접두사를 사용하세요: T는 템플릿(TArray), U는 UObject, A는 Actor, S는 Slate 위젯, F는 구조체, E는 열거형, I는 인터페이스입니다. 불리언에는 bIsActive와 같이 'b' 접두사를 붙입니다.
"unreal-engine-cpp-pro" 사용 중입니다. Unreal Engine 5 C++에서 인터페이스를 구현하려면 어떻게 하나요?
예상 결과:
UINTERFACE()로 인터페이스를 선언하고 클래스에서 구현한 후, 인터페이스 함수를 호출하기 전에 Implements<UYourInterface>()로 확인하세요. 실행에는 IInterfaceName::Execute_Method(Object)를 사용하세요.
보안 감사
안전All 70 static findings are false positives. The scanner incorrectly flagged Unreal Engine lifecycle methods (BeginPlay, EndPlay, Tick) as system reconnaissance, soft reference patterns (TSoftClassPtr) as weak cryptographic algorithms, and markdown code fences as shell backtick execution. This is a legitimate Unreal Engine 5 C++ development guide with no security concerns.
품질 점수
만들 수 있는 것
게임플레이 프로그래머
적절한 GC 어노테이션과 성능 패턴을 포함하여 효율적인 Actor 및 Component 클래스를 작성합니다.
기술 디렉터
팀 코딩 표준을 수립하고 UE5 모범 사례에 대한 C++ 풀 리퀘스트를 검토합니다.
중급 UE 개발자
soft reference, 인터페이스 패턴, 메모리 최적화와 같은 고급 주제를 학습합니다.
이 프롬프트를 사용해 보세요
Unreal Engine 5 C++에서 UObject 포인터 멤버 변수를 올바르게 선언하려면 어떻게 해야 하나요? 가비지 컬렉션을 위해 어떤 지정자를 사용해야 하나요?
Tick 함수에서 캐스팅을 피하기 위한 권장 접근 방식은 무엇인가요? Unreal Engine 5에서 컴포넌트 참조를 어떻게 캐시해야 하나요?
UFUNCTION을 사용하여 C++ 함수를 Blueprint에 노출하려면 어떻게 하나요? BlueprintReadWrite와 BlueprintReadOnly의 차이점은 무엇인가요?
Unreal Engine 5에서 TSubclassOf, TSoftClassPtr, TSoftObjectPtr의 차이점을 설명해 주세요. 각각 언제 사용해야 하나요?
모범 사례
- 기본적으로 Tick을 비활성화하고(bCanEverTick = false), 절대적으로 필요한 경우에만 활성화하며, 타이머와 이벤트驱动 로직을 선호하세요.
- UObject 포인터에는 항상 UPROPERTY()를 사용하여 가비지 컬렉션 문제와 메모리 누수를 방지하세요.
- Tick 함수에서 GetComponentByClass를 호출하여 성능 오버헤드가 발생하는 대신, BeginPlay에서 컴포넌트 참조를 캐시하세요.
피하기
- Tick 함수 내에서 Cast<T>() 사용 - 매 프레임마다 성능 오버헤드가 발생하며 핫 코드 경로에서 피해야 합니다.
- 대용량 에셋에 하드 참조(TSubclassOf) 저장 - 전체 하위 트리가 로드되도록 강제하여 레벨 전환 시 메모리 급증을 유발할 수 있습니다.
- 대리자와 타이머의 EndPlay 정리 건너뛰기 - 액터가 삭제되지만 콜백이 계속 실행되어 크래시가 발생합니다.