🤖
Unreal Engine
Avoid common Unreal mistakes — garbage collection, UPROPERTY macros, replication authority, and asset reference pitfalls.
安全通过
💬Prompt
技能说明
name: Unreal Engine description: Avoid common Unreal mistakes — garbage collection, UPROPERTY macros, replication authority, and asset reference pitfalls. metadata: {"clawdbot":{"emoji":"🎯","os":["linux","darwin","win32"]}}
Garbage Collection
- Raw pointers to UObjects get garbage collected — use
UPROPERTY()to prevent UPROPERTY()marks for GC tracking — without it, pointer becomes danglingTWeakObjectPtrfor optional references — doesn't prevent collection, checkIsValid()NewObject<T>()for UObjects — never rawnew, GC won't track it
UPROPERTY and UFUNCTION
UPROPERTY()required for Blueprint access — and for GC trackingUFUNCTION()for Blueprint callable/events — also required for replicationEditAnywherevsVisibleAnywhere— edit allows changes, visible is read-onlyBlueprintReadWritevsBlueprintReadOnly— controls Blueprint access level
Actor Lifecycle
BeginPlayafter all components initialized — safe to access components- Constructor runs on CDO (Class Default Object) — don't spawn actors or access world
PostInitializeComponentsbefore BeginPlay — for component setupEndPlayfor cleanup — called on destroy and level transition
Tick Performance
- Disable tick when not needed —
PrimaryActorTick.bCanEverTick = false - Use timers instead of tick + counter —
GetWorldTimerManager().SetTimer() - Tick groups for ordering —
PrePhysics,DuringPhysics,PostPhysics - Blueprint tick expensive — move hot logic to C++
Replication
- Server is authority — clients request, server validates and replicates
UPROPERTY(Replicated)for variable sync — implementGetLifetimeReplicatedPropsUFUNCTION(Server)for client-to-server RPC — must beReliableorUnreliableHasAuthority()to check if server — before executing authoritative logicRoleandRemoteRolefor network role checks —ROLE_Authorityis server
Asset References
- Hard references load with parent — bloats memory, use for always-needed
- Soft references (
TSoftObjectPtr) load on demand — for optional or large assets LoadSynchronous()orAsyncLoadfor soft refs — don't access until loaded- Blueprint class references:
TSubclassOf<T>— type-safe class selection
Memory and Pointers
TSharedPtrfor non-UObjects — reference counted, auto-deletesTUniquePtrfor exclusive ownership — can't copy, moves onlyMakeShared<T>()for creation — single allocation for object and control block- Never mix raw
new/deletewith smart pointers — choose one pattern
Common Mistakes
- Accessing null actor in Blueprint — use
IsValid()node before access - PIE (Play In Editor) vs packaged build differ — test shipping build
- Hot reload corrupts Blueprints — close editor, build, reopen
GetWorld()null in constructor — world doesn't exist yet, use BeginPlay- Spawning in constructor crashes — defer to BeginPlay or later
FStringfor display,FNamefor identifiers — FName is hashed, faster comparison
如何使用「Unreal Engine」?
- 打开小龙虾AI(Web 或 iOS App)
- 点击上方「立即使用」按钮,或在对话框中输入任务描述
- 小龙虾AI 会自动匹配并调用「Unreal Engine」技能完成任务
- 结果即时呈现,支持继续对话优化