About unity-profiler
unity-profiler is a set of skills for reading Unity runtime performance data, for developers checking frame rate, memory, and rendering metrics. It provides read-only snapshots rather than Profiler recording controls.
Key features
- 01Read FPS, memory, and batch counts
- 02Inspect runtime objects by memory use
- 03Measure texture, mesh, material, and audio memory
- 04Retrieve rendering statistics
- 05Count loaded objects and AssetBundles
Use cases
- 01Check runtime frame rate and batch counts
- 02Find runtime objects with high memory use
- 03Review texture or mesh memory usage
- 04Inspect rendering metrics and loaded AssetBundles
MCP support
MCP clients can call these read-only skills to retrieve Unity performance and memory snapshots.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-profilerAfter installing, type/unity-profilerin Claude Code to confirm it loaded.
Details
From the project READMEBefore calling any skill in this module: if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via
GET /skills/recommend?includeSchema=true) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.
Triggers
- Checking runtime performance
- Taking a profiler snapshot
- Inspecting memory/frame stats
- 查看运行时性能、抓取 profiler 快照、检查内存/帧率统计
Profiler Skills
Get performance statistics.
Operating Mode
- Approval / Auto / Bypass: 所有 skill 直接执行。本模块全部标
ReadOnly = true, Mode = SkillMode.SemiAuto,三档模式下都不需要 grant。 - 本模块不含 Delete / PlayMode / Reload / RiskLevel=high 类 skill —— 没有
IsForbiddenInSemi拦截。 - 注:本组 skill 仅做"瞬时快照"读取,不是 Profiler 录制控制;持续采样请用 Unity Profiler 窗口。
DO NOT (common hallucinations):
profiler_start/profiler_stopdo not exist → profiler skills are read-only snapshots, not recording controlsprofiler_recorddoes not exist → use Unity Profiler window for recordingprofiler_analyze/profiler_get_fpsdo not exist → useprofiler_get_stats(FPS, batches, draw calls) orprofiler_get_memory(heap sizes)
Routing:
- For scene performance hints → use
perceptionmodule'sscene_performance_hints - For memory info →
debug_get_memory_info(debug module) orprofiler_get_memory(this module) - For optimization suggestions → use
optimizationmodule
Skills
profiler_get_stats
Get performance statistics (FPS, Memory, Batches). Parameters: None.
Returns:
{
"fps": 60.0,
"triangles": 1500,
"batches": 12,
"memory": { "totalAllocatedMB": 256.5, ... }
}
profiler_get_memory
Get memory usage overview (total allocated, reserved, mono heap). Parameters: None.
Returns: { success, totalAllocatedMB, totalReservedMB, unusedReservedMB, monoHeapMB, monoUsedMB }
profiler_get_runtime_memory
Get top N objects by runtime memory usage in the scene.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | int | No | 20 | Maximum number of objects to return |
Returns: { success, totalTrackedMB, showing, objects: [{ name, type, sizeKB }] }
profiler_get_texture_memory
Get memory usage of all loaded textures.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | int | No | 50 | Maximum number of textures to return |
Returns: { success, totalCount, totalMB, topTextures: [{ name, type, sizeKB, width, height }] }
profiler_get_mesh_memory
Get memory usage of all loaded meshes.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | int | No | 50 | Maximum number of meshes to return |
Returns: { success, totalCount, totalMB, topMeshes: [{ name, sizeKB, vertices, triangles }] }
profiler_get_material_memory
Get memory usage of all loaded materials.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | int | No | 50 | Maximum number of materials to return |
Returns: { success, totalCount, totalMB, topMaterials: [{ name, shader, sizeKB }] }
profiler_get_audio_memory
Get memory usage of all loaded AudioClips.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | int | No | 50 | Maximum number of clips to return |
Returns: { success, totalCount, totalMB, topClips: [{ name, sizeKB, length, channels, frequency }] }
profiler_get_object_count
Count all loaded objects grouped by type.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| topN | int | No | 20 | Number of top types to return |
Returns: { success, totalObjects, topTypes: [{ type, count }] }
profiler_get_rendering_stats
Get rendering statistics (batches, triangles, vertices, etc.). Parameters: None.
Returns: { success, frameTime, renderTime, triangles, vertices, batches, setPassCalls, drawCalls, dynamicBatchedDrawCalls, staticBatchedDrawCalls, instancedBatchedDrawCalls, shadowCasters }
profiler_get_asset_bundle_stats
Get information about all loaded AssetBundles. Parameters: None.
Returns: { success, count, bundles: [{ name, isStreamedSceneAssetBundle }] }
Exact Signatures
Exact names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.