unreal-engine-cpp-pro
Expert guide for Unreal Engine 5.x C++ development, covering UObject hygiene, performance patterns, and best practices.
DeepseekModel
官方收录技能
质量 良好 · 64
v1.0.0
获取
https://deepseekmodel.com/api/download.php?id=bouclem-skills-skills-games-unreal-001-unreal-engine-cpp-pro-skill-md&format=skill
下载 .skill
标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name unreal-engine-cpp-pro description Expert guide for Unreal Engine 5.x C++ development, covering UObject hygiene, performance patterns, and best practices. risk safe source self date_added 2026-02-27 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 UObject & Garbage Collection : Always use UPROPERTY() for UObject* member variables to ensure they are tracked by the Garbage Collector (GC). Use TStrongObjectPtr<> if you need to keep a root reference outside of a UObject graph, but prefer addToRoot() generally. Understand the IsValid() check vs nullptr . IsValid() handles pending kill state safely. Unreal Reflection System : Use UCLASS() , USTRUCT() , UENUM() , UFUNCTION() to expose types to the reflection system and Blueprints. Minimize BlueprintReadWrite when possible; prefer BlueprintReadOnly for state that shouldn't be trampled by logic in UI/Level BPs. 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 in BeginPlay . Structs vs Classes : Use F structs 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 (TargetActor-> Implements <UInteractable>()) { IInteractable:: Execute_OnInteract (TargetActor, this ); } 3. Async Loading (Soft References) 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_LOG with 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 in UPROPERTY ? 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.
Agent 识别该技能的关键词,点击任意一个即可复制。
该技能未提供触发词。
下载的 .skill 包内含以下字段。
| 字段 | 说明 |
|---|---|
| format | 格式标识(skill/v1) |
| skill_id | 技能唯一 ID |
| name | 技能名称 |
| version | 版本号 |
| description | 技能描述 |
| category | 所属分类(数组) |
| trigger_words | 触发词列表 |
| tags | 标签列表 |
| source | 来源标识 |
| source_url | 来源链接(本页地址) |
| exported_at | 导出时间(每次下载生成) |
| system_prompt | 系统提示词正文 |
| model_config | 模型参数:provider / model / temperature / max_tokens / top_p |
| examples | 示例 |
| install_guide | 各平台导入说明(Coze / Dify / Claude / 自定义框架) |