unreal-engine-cpp-pro – skill Khác cho agent AI
Hướng dẫn chuyên sâu về phát triển C++ với Unreal Engine 5.x, bao gồm cách quản lý UObject, các mẫu tối ưu hiệu năng và thực hành tốt nhất.
Cài skill unreal-engine-cpp-pro bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/unreal-engine-cpp-pro-f8ba2.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /unreal-engine-cpp-pro – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/unreal-engine-cpp-pro-f8ba2.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $unreal-engine-cpp-pro – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/unreal-engine-cpp-pro-f8ba2.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /unreal-engine-cpp-pro – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/unreal-engine-cpp-pro-f8ba2.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /unreal-engine-cpp-pro – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Unreal Engine C++ Pro
This skill provides expert-level guidelines for developing with Unreal Engine 5 using C++. It focuses on writing robust, performant, and standard-compliant code.
When to Use
Use this skill when:
- Developing C++ code for Unreal Engine 5.x projects
- Writing Actors, Components, or UObject-derived classes
- Optimizing performance-critical code in Unreal Engine
- Debugging memory leaks or garbage collection issues
- Implementing Blueprint-exposed functionality
- Following Epic Games' coding standards and conventions
- Working with Unreal's reflection system (UCLASS, USTRUCT, UFUNCTION)
- Managing asset loading and soft references
Do not use this skill when:
- Working with Blueprint-only projects (no C++ code)
- Developing for Unreal Engine versions prior to 5.x
- Working on non-Unreal game engines
- The task is unrelated to Unreal Engine development
Core Principles
1. UObject & Garbage Collection:
- Always use
UPROPERTY()forUObject*member variables to ensure they are tracked by the Garbage Collector (GC). - Use
TStrongObjectPtr<>cautiously for a scoped strong reference outside a reflected UObject graph; do not routinely root objects manually. ManualAddToRoot()requires deliberate pairedRemoveFromRoot()lifecycle management. - Understand the
IsValid()check vsnullptr.IsValid()handles pending kill state safely.
2. Unreal Reflection System:
- Use
UCLASS(),USTRUCT(),UENUM(),UFUNCTION()to expose types to the reflection system and Blueprints. - Minimize
BlueprintReadWritewhen possible; preferBlueprintReadOnlyfor state that shouldn't be trampled by logic in UI/Level BPs.
3. Performance First:
- Tick: Disable Ticking (
bCanEverTick = false) by default. Only enable it if absolutely necessary. Prefer timers (GetWorldTimerManager()) or event-driven logic. - Casting: Avoid
Cast<T>()in hot loops. Cache references inBeginPlay. - Structs vs Classes: Use
Fstructs for data-heavy, non-UObject types to reduce overhead.
Naming Conventions (Strict)
Follow Epic Games' coding standard:
- Templates: Prefix with
T(e.g.,TArray,TMap). - UObject: Prefix with
U(e.g.,UCharacterMovementComponent). - AActor: Prefix with
A(e.g.,AMyGameMode). - SWidget: Prefix with
S(Slate widgets). - Structs: Prefix with
F(e.g.,FVector). - Enums: Prefix with
E(e.g.,EWeaponState). - Interfaces: Prefix with
I(e.g.,IInteractable). - Booleans: Prefix with
b(e.g.,bIsDead).
Common Patterns
1. Robust Component Lookup
Avoid GetComponentByClass in Tick. Do it in PostInitializeComponents or BeginPlay.
void AMyCharacter::PostInitializeComponents() {
Super::PostInitializeComponents();
HealthComp = FindComponentByClass<UHealthComponent>();
check(HealthComp); // Fail hard in dev if missing
}2. Interface Implementation
Use interfaces to decouple systems (e.g., Interaction system).
// Interface call check
if (IsValid(TargetActor) && TargetActor->Implements<UInteractable>()) {
IInteractable::Execute_OnInteract(TargetActor, this);
}3. Soft References (synchronous illustration)
Avoid hard references (UPROPERTY(EditDefaultsOnly) TSubclassOf<AActor>) for massive assets which force load orders. Use TSoftClassPtr or TSoftObjectPtr.
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TSoftClassPtr<AWeapon> WeaponClassToLoad;
void AMyCharacter::Equip() {
if (WeaponClassToLoad.IsPending()) {
WeaponClassToLoad.LoadSynchronous(); // Or use StreamableManager for async
}
}Debugging
- Logging: Use
UE_LOGwith custom categories.
DEFINE_LOG_CATEGORY_STATIC(LogMyGame, Log, All);
UE_LOG(LogMyGame, Warning, TEXT("Health is low: %f"), CurrentHealth);
- Screen Messages:
if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Died!"));
- Visual Logger: extremely useful for AI debugging. Implement
IVisualLoggerDebugSnapshotInterface.
Checklist before PR
- [ ] Does this Actor need to Tick? Can it be a Timer?
- [ ] Are all
UObject*members wrapped inUPROPERTY? - [ ] Are hard references (TSubclassOf) causing load chains? Can they be Soft Ptrs?
- [ ] Did you clean up verified delegates in
EndPlay?
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
The actor files are illustrative and require replacing MYGAME_API, generating project headers and building in the target engine. LoadSynchronous() can stall the game thread; use the target version's streamable async loading API for latency-sensitive paths. Prefer reflected TObjectPtr members where supported. [Epic object-pointer guidance](https://dev.epicgames.com/documentation/en-us/unreal-engine/object-pointers-in-unreal-engine).
Skill liên quan
- unsplash-integration – Kỹ năng tích hợp để tìm kiếm và lấy ảnh chuyên nghiệp chất lượng cao, miễn phí sử dụng…
- update-swiftui-apis – Quét tài liệu SwiftUI của Apple để tìm các API đã bị deprecated và cập nhật SwiftUI…
- url-slug-generator – Công cụ tạo URL slug. Dùng khi làm việc với tiêu đề trang và tùy chọn ngôn ngữ hoặc…
- vendor-contractor-management – Sổ đăng ký nhà cung cấp: tên, loại, dịch vụ, liên hệ, ngày hợp đồng liên kết, điều khoản…
- verification-before-completion – Khẳng định công việc đã hoàn thành mà chưa kiểm chứng là không trung thực, không phải…
- viboscope – Ghép đôi tương thích tâm lý — tìm co-founder, cộng tác viên và bạn bè với sự đồng ý rõ…
- video-router – Định tuyến brief sản xuất video sang tạo mới, dựng cố định, chỉnh sửa từ footage có sẵn…
- viral-video-teardown-remake – Cài đặt và sử dụng gói Viral Video Remake chính thức, ghim theo digest, cho các công…