Token导航 LogoToken导航

Agent Skill · 开发

ue-world-level-streaming(ue 世界级流媒体)

ue-world-level-streaming 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

ue-world-level-streaming 是开发类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在开发类的 21,746 个 Skill 里排第 11,181。

总安装 1,903周安装 77GitHub Stars 125下载 598核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ue-world-level-streaming(ue 世界级流媒体)
来源仓库:https://github.com/quodsoler/unreal-engine-skills
仓库路径:skills/ue-world-level-streaming
安装命令:
npx skills add https://github.com/quodsoler/unreal-engine-skills --skill ue-world-level-streaming
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/quodsoler/unreal-engine-skills --skill ue-world-level-streaming

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

ue-world-level-streaming 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态、代码变更或协作事项进行整理。

通过 npx skills add 命令从指定仓库安装,需结合原始 README 核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。当前无原始 SKILL.md 内容可参考,功能以实际实现为准。

来源仓库内路径:skills/ue-world-level-streaming

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/quodsoler/unreal-engine-skills --skill ue-worl…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

ue-world-level-streaming 怎么安装?

在终端执行 npx skills add https://github.com/quodsoler/unreal-engine-skills --skill ue-world-level-st…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

ue-world-level-streaming 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

ue-world-level-streaming 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

ue-world-level-streaming 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

ue-world-level-streaming 用的人多吗?

公开数据是累计安装 1,903 次,近一周安装 77 次,下载 598 次,GitHub 125 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

ue-world-level-streaming 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
ue-world-level-streaming

ue 世界级流媒体 · 本页

1,903125需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

UE World & Level Streaming

You are an expert in Unreal Engine's world management and level streaming systems.


Context

Read .agents/ue-project-context.md before advising. Pay attention to:

  • Engine version — World Partition is UE5 only; sub-level streaming works in both UE4 and UE5.
  • Build targets — Dedicated server has no rendering-driven streaming; streaming must be server-safe.
  • World size — Determines whether World Partition or manual sub-level streaming is appropriate.
  • Multiplayer — Seamless travel requirements and per-player streaming radius.

Information to Gather

Before recommending a streaming approach, confirm:

  1. World size and type: Is this an open world (World Partition), a set of discrete levels, or a hub-and-spoke map?
  2. Multiplayer: Are you running a dedicated server? Are per-player streaming radii needed?
  3. Streaming control: Does gameplay code need to control load/unload explicitly, or should proximity drive it?
  4. Level travel: Non-seamless (lobby flows), seamless (multiplayer round transitions), or no travel?
  5. Persistent data: What must survive a level transition — player state, inventory, session state?

World Partition (UE5)

Enabling World Partition

Enable via the Level menu: World -> World Partition -> Convert Level. Once enabled, all actors in the level are managed by World Partition's grid. The level can no longer have traditional sub-levels. Use One File Per Actor (OFPA) for collaborative editing: each actor is saved as its own .uasset under __ExternalActors__.

Runtime Data Layers

Data layers replace the old sub-level toggle pattern. A runtime data layer can be loaded/unloaded at runtime without traveling to a new map.

// MyGameMode.cpp
#include "WorldPartition/DataLayer/DataLayerManager.h"

void AMyGameMode::ActivateDungeonDataLayer()
{
    UDataLayerManager* DLMgr = UDataLayerManager::GetDataLayerManager(GetWorld());
    if (!DLMgr) return;

    // Get by asset reference (set up in editor as a UDataLayerAsset)
    UDataLayerAsset* DungeonLayer = DungeonDataLayerAsset.LoadSynchronous();
    DLMgr->SetDataLayerRuntimeState(DungeonLayer, EDataLayerRuntimeState::Activated);
}

void AMyGameMode::DeactivateDungeonDataLayer()
{
    UDataLayerManager* DLMgr = UDataLayerManager::GetDataLayerManager(GetWorld());
    if (!DLMgr) return;

    UDataLayerAsset* DungeonLayer = DungeonDataLayerAsset.LoadSynchronous();
    DLMgr->SetDataLayerRuntimeState(DungeonLayer, EDataLayerRuntimeState::Unloaded);
}

Data layer states:

  • Unloaded — not loaded, not visible.
  • Loaded — loaded into memory, not visible (pre-warming).
  • Activated — loaded and visible (fully active).

Streaming Sources

Each player controller is a streaming source by default. For custom sources (cinematic cameras, AI directors), implement IWorldPartitionStreamingSourceProvider.

HLOD

HLOD provides distant merged-mesh representations of World Partition cells. Configure HLOD layers in the World Partition editor; build before shipping via Build -> Build World Partition HLODs. Without HLOD, content beyond the streaming radius is simply absent.

Converting Sub-Levels to World Partition

Use Tools -> World Partition -> Convert Level. Actors migrate into the persistent level under WP management. Audit cross-level references beforehand — hard references to converted actors become invalid.

World Partition and Multiplayer

In a multiplayer session, each player controller acts as a streaming source with a configurable radius. The server streams based on server-side sources; clients receive visibility updates via AServerStreamingLevelsVisibility. On dedicated servers, rendering-based streaming does not apply — streaming is driven by server-side sources only.

Streaming radius is configured per-partition in the World Partition editor UI (LoadingRange on URuntimePartition), not via ini.


Level Streaming (Manual Sub-Levels)

ULevelStreaming State Machine

From LevelStreaming.h, the full state sequence is:

Removed -> Unloaded -> Loading -> LoadedNotVisible -> MakingVisible -> LoadedVisible -> MakingInvisible -> LoadedNotVisible
                                      |
                                 FailedToLoad   (check logs; level asset missing or corrupt)

Query state with:

ULevelStreaming* StreamingLevel = /* ... */;
ELevelStreamingState State = StreamingLevel->GetLevelStreamingState();

switch (State)
{
    case ELevelStreamingState::Unloaded:         /* not in memory */ break;
    case ELevelStreamingState::Loading:          /* async load in progress */ break;
    case ELevelStreamingState::LoadedNotVisible: /* in memory, not rendered */ break;
    case ELevelStreamingState::MakingVisible:    /* adding to world */ break;
    case ELevelStreamingState::LoadedVisible:    /* fully active */ break;
    case ELevelStreamingState::MakingInvisible:  /* removing from rendering */ break;
    case ELevelStreamingState::FailedToLoad:     /* check logs */ break;
}

UGameplayStatics: LoadStreamLevel / UnloadStreamLevel

For Blueprint-friendly async streaming with latent actions (from GameplayStatics.h):

// MyActor.cpp — async load using FLatentActionInfo
#include "Kismet/GameplayStatics.h"

void AMyActor::StreamInRoom(FName LevelName)
{
    FLatentActionInfo LatentInfo;
    LatentInfo.CallbackTarget = this;
    LatentInfo.ExecutionFunction = FName("OnRoomLoaded");
    LatentInfo.Linkage = 0;
    LatentInfo.UUID = GetUniqueID();

    UGameplayStatics::LoadStreamLevel(
        this,           // WorldContextObject
        LevelName,      // e.g., FName("Room_01")
        true,           // bMakeVisibleAfterLoad
        false,          // bShouldBlockOnLoad — keep false for async
        LatentInfo
    );
}

UFUNCTION()
void AMyActor::OnRoomLoaded()
{
    // Room is now loaded and visible
}

void AMyActor::StreamOutRoom(FName LevelName)
{
    FLatentActionInfo LatentInfo;
    LatentInfo.CallbackTarget = this;
    LatentInfo.ExecutionFunction = FName("OnRoomUnloaded");
    LatentInfo.Linkage = 0;
    LatentInfo.UUID = GetUniqueID() + 1;

    UGameplayStatics::UnloadStreamLevel(
        this,
        LevelName,
        LatentInfo,
        false // bShouldBlockOnUnload
    );
}

For soft object pointers (preferred for packaging safety), use LoadStreamLevelBySoftObjectPtr with the same arguments.

ULevelStreamingDynamic: Runtime Level Instances

Use ULevelStreamingDynamic::LoadLevelInstance to load the same level package multiple times at different transforms — for procedural dungeons, modular buildings, or instanced rooms (from LevelStreamingDynamic.h):

#include "Engine/LevelStreamingDynamic.h"

void AMyDungeonGenerator::SpawnRoom(FVector Location, FRotator Rotation)
{
    bool bSuccess = false;
    ULevelStreamingDynamic* StreamingLevel = ULevelStreamingDynamic::LoadLevelInstance(
        this,                              // WorldContextObject
        TEXT("/Game/Levels/Room_Corridor"), // LongPackageName — full path
        Location,
        Rotation,
        bSuccess
    );

    if (bSuccess && StreamingLevel)
    {
        // Bind to delegate to know when visible
        StreamingLevel->OnLevelShown.AddDynamic(this, &AMyDungeonGenerator::OnRoomShown);
        StreamingLevel->OnLevelHidden.AddDynamic(this, &AMyDungeonGenerator::OnRoomHidden);

        LoadedRooms.Add(StreamingLevel);
    }
}

void AMyDungeonGenerator::UnloadRoom(ULevelStreamingDynamic* StreamingLevel)
{
    if (StreamingLevel)
    {
        StreamingLevel->SetShouldBeLoaded(false);
        StreamingLevel->SetShouldBeVisible(false);
        StreamingLevel->SetIsRequestingUnloadAndRemoval(true);
    }
}

For networking: use OptionalLevelNameOverride to give all clients and server the same package name for a given instance. Without this, names are auto-generated uniquely per process and will not match across connections.

ULevelStreamingDynamic::FLoadLevelInstanceParams Params(
    GetWorld(),
    TEXT("/Game/Levels/Room_Corridor"),
    FTransform(Rotation, Location)
);
Params.OptionalLevelNameOverride = &InstanceName; // FString, same on server and clients
Params.bInitiallyVisible = true;

bool bSuccess = false;
ULevelStreamingDynamic* Level = ULevelStreamingDynamic::LoadLevelInstance(Params, bSuccess);

OnLevelShown / OnLevelHidden Delegates

From LevelStreaming.h — four BlueprintAssignable delegates: OnLevelLoaded, OnLevelUnloaded, OnLevelShown, OnLevelHidden. Bind with AddDynamic:

StreamingLevel->OnLevelShown.AddDynamic(this, &UMyManager::HandleLevelShown);
StreamingLevel->OnLevelLoaded.AddDynamic(this, &UMyManager::HandleLevelLoaded);

Streaming Volumes

ALevelStreamingVolume automatically controls sub-level loading when the player camera is inside or outside the volume. From LevelStreamingVolume.h:

// EStreamingVolumeUsage — set on the volume in editor
SVB_Loading                 // load but do not make visible
SVB_LoadingAndVisibility    // load and make visible (most common)
SVB_VisibilityBlockingOnLoad // force blocking load when entering
SVB_BlockingOnLoad          // block load of associated levels
SVB_LoadingNotVisible       // load, keep invisible (pre-warm)

Volumes are assigned to a sub-level via its EditorStreamingVolumes array. Disable volume-driven streaming for a level with ULevelStreaming::bDisableDistanceStreaming = true when you want code-only control.

Manual Visibility Control

// Get streaming level reference from world
const TArray<ULevelStreaming*>& Levels = GetWorld()->GetStreamingLevels();
for (ULevelStreaming* Level : Levels)
{
    if (Level->GetWorldAssetPackageFName() == FName("/Game/Levels/MySubLevel"))
    {
        Level->SetShouldBeLoaded(true);
        Level->SetShouldBeVisible(true);
        break;
    }
}

Force flush all streaming (blocks until complete — use sparingly):

UGameplayStatics::FlushLevelStreaming(this);

Level Instances

ALevelInstance places a level as a reusable chunk in the editor. Actors inside are editable as a unit. For runtime instancing, see ULevelStreamingDynamic above.

Packed Level Actors merge instance meshes into a single static mesh for performance. Enable via right-click on Level Instance → Pack Level Actor.

Per-instance property overrides (UE5.1+): Each placed ALevelInstance can override individual actor properties (materials, gameplay values) without modifying the source level. Configure overrides in the Details panel; overridden values bake into packed level data at cook time.


Level Travel

Non-Seamless: UGameplayStatics::OpenLevel

Destroys the current world and loads a new one; all clients disconnect. From GameplayStatics.h:

UGameplayStatics::OpenLevel(this, FName("/Game/Maps/MainMenu"), true);
UGameplayStatics::OpenLevel(this, FName("/Game/Maps/GameLevel"), true, TEXT("?Difficulty=Hard"));
UGameplayStatics::OpenLevelBySoftObjectPtr(this, GameLevelAsset, true); // packaging-safe

Server Travel (Multiplayer, Non-Seamless)

Initiated on the server; all connected clients follow (World.h):

GetWorld()->ServerTravel(TEXT("/Game/Maps/Level02?listen"), /*bAbsolute=*/false);

Seamless Travel

Seamless travel loads the destination map in the background via a transition (midpoint) map. Clients stay connected. From World.h:

void UWorld::SeamlessTravel(const FString& InURL, bool bAbsolute);
bool UWorld::IsInSeamlessTravel() const;
void UWorld::SetSeamlessTravelMidpointPause(bool bNowPaused);

Setup requirements:

  1. Set bUseSeamlessTravel = true on AGameModeBase:
// bUseSeamlessTravel is already declared in AGameModeBase — do NOT redeclare it.
// Just set it in the constructor:

// MyGameMode.cpp constructor
bUseSeamlessTravel = true;
  1. Set a transition map in DefaultEngine.ini:
[/Script/Engine.GameMapsSettings]
TransitionMap=/Game/Maps/Transition
  1. Override GetSeamlessTravelActorList to control which actors persist:
// GameMode — called on server side during transition
void AMyGameMode::GetSeamlessTravelActorList(bool bToTransition, TArray<AActor*>& ActorList)
{
    Super::GetSeamlessTravelActorList(bToTransition, ActorList);

    if (!bToTransition)
    {
        // bToTransition=false means we're moving TO the destination
        // Add actors that should survive (e.g., GameState, custom managers)
        ActorList.Add(MyPersistentManager);
    }
}

// GameMode — called after destination map is loaded
void AMyGameMode::PostSeamlessTravel()
{
    Super::PostSeamlessTravel();
    // Re-initialize any post-travel systems
}

// GameMode — handle re-possessing players after travel
void AMyGameMode::HandleSeamlessTravelPlayer(AController*& C)
{
    Super::HandleSeamlessTravelPlayer(C);
    // Restore player-specific state here
}
  1. Trigger on server:
// From GameMode, server-only
GetWorld()->ServerTravel(TEXT("/Game/Maps/Level02?listen"));
// Seamless travel is automatic because bUseSeamlessTravel is true

Travel sequence: current world -> transition map -> destination world. Use SetSeamlessTravelMidpointPause(true) to pause at midpoint for pre-loading.

Client Travel

For client-initiated travel (join server, change options), call APlayerController::ClientTravel(URL, ETravelType::TRAVEL_Absolute) from the player controller.


World Subsystems

UWorldSubsystem (from Subsystems/WorldSubsystem.h) is auto-instantiated once per UWorld. It is destroyed when the world is destroyed — including on level travel. It is the correct place for per-world singleton logic: streaming managers, zone trackers, world-state caches.

// MyStreamingManager.h
UCLASS()
class MYGAME_API UMyStreamingManager : public UWorldSubsystem
{
    GENERATED_BODY()
public:
    virtual void PostInitialize() override;                          // after all subsystems init
    virtual void OnWorldBeginPlay(UWorld& InWorld) override;         // after all BeginPlay
    virtual void PreDeinitialize() override;                         // cleanup hook
    virtual bool ShouldCreateSubsystem(UObject* Outer) const override; // filter world type

    void RequestLoadZone(FName ZoneName);
    void RequestUnloadZone(FName ZoneName);
private:
    TMap<FName, TWeakObjectPtr<ULevelStreaming>> ActiveZones;
};

Access from anywhere with a world context:

UMyStreamingManager* Manager = GetWorld()->GetSubsystem<UMyStreamingManager>();
if (Manager)
{
    Manager->RequestLoadZone(FName("Zone_A"));
}

UTickableWorldSubsystem

For per-frame updates (distance checks, zone detection). Inherit from UTickableWorldSubsystem. Must call Super::Initialize and Super::Deinitialize to enable/disable ticking. Implement GetStatId returning a RETURN_QUICK_DECLARE_CYCLE_STAT.


Persistent Data Across Level Transitions

MechanismLifetimeUse Case
UGameInstanceEntire application sessionCross-level player state, session config
UGameInstanceSubsystemEntire application sessionServices that outlive any world
Seamless travel actor listTransition onlyActors that physically cross (GameState, managers)
USaveGame + SaveGameToSlotDisk-persistentLong-term saves, progression
UWorldSubsystemPer worldWorld-scoped cache; push data to UGameInstance in Deinitialize() before travel clears it

GameInstance Pattern

Store cross-level data in UGameInstance properties (survives all level travel). Access from anywhere with a world context:

UMyGameInstance* GI = GetGameInstance<UMyGameInstance>();
if (GI) GI->PlayerScore += 100;

Common Mistakes and Anti-Patterns

Loading everything at once. Setting bShouldBlockOnLoad = true on many sub-levels causes hitches. Use async loading and the latent action pattern. Only block on load when the game is behind a loading screen.

Streaming volume gaps. Overlapping volumes cause spurious unload/reload cycles. Use MinTimeBetweenVolumeUnloadRequests on the streaming level to add a cooldown and prevent flickering.

Broken seamless travel in multiplayer. If bUseSeamlessTravel is true but no transition map is set, seamless travel silently falls back to non-seamless. Always set TransitionMap in DefaultEngine.ini.

Cross-level hard references. Hard object references (UPROPERTY() UObject*) between actors in different streaming levels cause the entire referenced level to stay loaded. Always use TSoftObjectPtr or TSoftClassPtr across level boundaries.

Dynamic streaming level names not matching server and client. When using ULevelStreamingDynamic::LoadLevelInstance, each process generates a unique name. In multiplayer, supply OptionalLevelNameOverride with the same name on server and all clients.

World Partition on dedicated server. The server does not use rendering-driven streaming. Streaming sources must be explicitly added server-side (e.g., player positions) or World Partition will not stream in actors correctly on the server.

Modifying StreamingLevels directly. Do not add to UWorld::StreamingLevels directly. Use AddStreamingLevels, AddUniqueStreamingLevels, and RemoveStreamingLevels (from World.h) which handle internal bookkeeping and StreamingLevelsToConsider.

Forgetting to call Super::Initialize / Super::Deinitialize in UTickableWorldSubsystem. These calls enable and disable ticking respectively. Skipping them results in a subsystem that never ticks or never stops ticking.


Quick Reference: Key APIs

APIHeaderNotes
UGameplayStatics::LoadStreamLevelKismet/GameplayStatics.hAsync latent load of named sub-level
UGameplayStatics::UnloadStreamLevelKismet/GameplayStatics.hAsync latent unload
UGameplayStatics::FlushLevelStreamingKismet/GameplayStatics.hBlocking flush — use behind loading screens
UGameplayStatics::OpenLevelKismet/GameplayStatics.hNon-seamless level travel
ULevelStreamingDynamic::LoadLevelInstanceEngine/LevelStreamingDynamic.hRuntime level instancing
ULevelStreaming::GetLevelStreamingStateEngine/LevelStreaming.hQuery current stream state
ULevelStreaming::SetShouldBeLoadedEngine/LevelStreaming.hDrive load state
ULevelStreaming::SetShouldBeVisibleEngine/LevelStreaming.hDrive visibility
ULevelStreaming::SetIsRequestingUnloadAndRemovalEngine/LevelStreaming.hRemove level from world
UWorld::ServerTravelEngine/World.hMultiplayer level transition
UWorld::SeamlessTravelEngine/World.hBackground seamless transition
UWorld::GetStreamingLevelsEngine/World.hIterate all streaming levels
UDataLayerManager::SetDataLayerRuntimeStateWorldPartition/DataLayer/DataLayerManager.hWorld Partition data layer control (use UDataLayerManager::GetDataLayerManager(World))
UWorldSubsystem::OnWorldBeginPlaySubsystems/WorldSubsystem.hPost-BeginPlay init hook
AGameModeBase::GetSeamlessTravelActorListGameFramework/GameModeBase.hControl actor persistence

Related Skills

  • ue-gameplay-framework — GameMode travel callbacks, PostSeamlessTravel, actor persistence rules.
  • ue-data-assets-tables — async asset loading patterns that complement level streaming.
  • ue-networking-replication — net visibility transactions, server streaming authority.
  • ue-cpp-foundations — subsystem patterns, UGameInstance lifetime.

平台分布

Codex

37.79%
按下载量换算226

Claude

29.91%
按下载量换算179

Cursor

20.5%
按下载量换算123

Gemini CLI

9.09%
按下载量换算54

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills