mcpField
U
unity-optimization

unity-optimization

github.com/besty0728开发1.9k85 次安装今天更新
代码仓库

关于 unity-optimization

面向 Unity 项目的资源与场景优化技能,可分析性能问题并调整纹理、模型和音频压缩设置。

主要功能

  1. 01分析场景面数和材质用量
  2. 02查找大型资源与重复材质
  3. 03分析透明对象过度绘制
  4. 04批量调整纹理、模型和音频压缩
  5. 05设置静态标记和 LOD Group

适用场景

  1. 01定位场景中的高面数或材质问题
  2. 02筛查超出大小阈值的资源
  3. 03批量修改资源压缩设置
  4. 04为 GameObject 配置静态标记或 LOD

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/besty0728/unity-skills --skill unity-optimization

安装后在 Claude Code 中输入/unity-optimization确认已加载。

详细介绍

**在调用此模块中的任何技能之前:**如果你打算根据技能名称或描述猜测参数后调用技能,请停止——先阅读此文件(或通过 GET /skills/recommend?includeSchema=true 获取其 schema)。如果你已经从 recommend/schema 中获得参数定义,则可以直接进行 dryRun。

触发条件

  • 缩减构建体积
  • 批量压缩资源
  • 分析场景面数与材质用量
  • 缩减包体、批量压缩资源、分析场景面数与材质用量

优化技能

优化项目资源(纹理、模型)。

操作模式

  • 审批:只读分析类技能(optimize_analyze_scene / optimize_find_large_assets / optimize_get_static_flags / optimize_find_duplicate_materials / optimize_analyze_overdraw,标记为 SkillMode.SemiAuto)直接执行;写入类技能(optimize_textures / optimize_mesh_compression / optimize_audio_compression / optimize_set_static_flags / optimize_set_lod_group,默认 SkillMode.FullAuto)需要用户授权,授权后一步执行并返回结果。
  • 自动 / 绕过:直接执行。
  • 本模块不包含 Delete / PlayMode / Reload / RiskLevel=high 类技能 —— 写入类技能修改的是 Importer / 组件设置,会重新导入资源,但不会触发 Domain Reload,也不会被 IsForbiddenInSemi 拦截。批量操作前务必检查筛选范围(filter / assetType),修改后无法通过 dry-run 回滚。

不要(常见臆测):

  • optimize_scene / optimization_run 不存在 → 请使用特定技能:optimize_analyze_scene、optimize_find_large_assets、optimize_find_duplicate_materials 等。
  • optimize_compress / optimize_compress_textures / optimize_compress_meshes / optimize_compress_audio 不存在 → 请使用 optimize_textures(纹理)、optimize_mesh_compression(网格)、optimize_audio_compression(音频)
  • optimize_set_lod / optimize_setup_lod 不存在 → 请使用 optimize_set_lod_group
  • 优化技能是分析与操作工具——应用批量更改前务必检查结果

路由:

  • 对于分析器指标 → 使用 profiler 模块
  • 对于静态批处理标记 → 使用 optimize_set_static_flags(本模块)
  • 对于性能审查指导 → 加载 performance 指导模块

技能

optimize_textures

优化纹理设置(maxSize、压缩)。返回已修改纹理的列表。

参数类型必填默认值描述
maxTextureSizeint否2048最大纹理尺寸
enableCrunchbool否true启用 Crunch 压缩
compressionQualityint否50压缩质量,范围为 0-100
filterstring否""资源筛选条件

返回: { success, count, message, modified }

optimize_mesh_compression

设置 3D 模型的网格压缩。

参数类型必填默认值描述
compressionLevelstring否"Medium"压缩级别:Off/Low/Medium/High
filterstring否""资源筛选条件

返回: { success, count, compression, modified }

optimize_analyze_scene

分析场景中的性能瓶颈(高面数网格、过多材质)。

参数类型必填默认值描述
polyThresholdint否10000高面数警告的三角形数量阈值
materialThresholdint否5过多材质警告的材质槽数量阈值

返回: { success, totalRenderers, totalTriangles, totalMaterialSlots, issueCount, issues }

optimize_find_large_assets

查找超过大小阈值(单位:KB)的资源。

参数类型必填默认值描述
thresholdKBint否1024大小阈值,单位为 KB
assetTypestring否""资源类型筛选条件(例如 Texture2D、AudioClip)
limitint否50最大结果数

返回: { success, threshold, count, assets }

optimize_set_static_flags

为 GameObject 设置静态标志。flags 为逗号分隔的标志,取值包括 ContributeGI、OccluderStatic、OccludeeStatic、BatchingStatic、ReflectionProbeStatic,以及两个已弃用成员 NavigationStatic 和 OffMeshLinkGeneration。

Everything 表示五个未弃用的标志,而不是字面意义上的全部。 StaticEditorFlags 未声明 Everything 或 Nothing,因此这两个名称是此 API 新增的别名:Nothing 会清除所有位,Everything 则是 Unity 自带的 Static 下拉菜单仍提供的成员的按位或结果——数值为 87,而非完整的 127。NavigationStatic 和 OffMeshLinkGeneration 已弃用且不包含在内,因此如果需要它们,请明确指定名称。每个列出的部分都必须有效:只要有一个未知名称,整个调用就会失败,而不会静默应用已解析的部分;包含枚举声明掩码以外位的原始数字("999")也会被拒绝。

参数类型必填默认值描述
namestring否nullGameObject 名称
instanceIdint否0GameObject 实例 ID
pathstring否nullGameObject 层级路径
flagsstring否"Everything"逗号分隔的静态标志,或 Everything / Nothing 别名(见上文)
includeChildrenbool否false递归应用于所有子对象

返回: { success, gameObject, flags, affectedCount }

optimize_get_static_flags

获取 GameObject 的静态标志。

参数类型必填默认值描述
namestring否nullGameObject 名称
instanceIdint否0GameObject 实例 ID
pathstring否nullGameObject 层级路径

返回: { success, gameObject, flags, isStatic }

optimize_audio_compression

批量设置音频压缩。compressionFormat:PCM/Vorbis/ADPCM。loadType:DecompressOnLoad/CompressedInMemory/Streaming

参数类型必填默认值描述
compressionFormatstring否"Vorbis"音频压缩格式:PCM/Vorbis/ADPCM
loadTypestring否"CompressedInMemory"音频加载类型:DecompressOnLoad/CompressedInMemory/Streaming
qualityfloat否0.5压缩质量,范围为 0.0-1.0
filterstring否""资源筛选条件

返回: { success, count, compressionFormat, loadType, modified }

optimize_find_duplicate_materials

查找着色器和属性相同的材质。

参数类型必填默认值描述
limitint否50返回的重复组最大数量

返回: { success, duplicateGroups, groups }

optimize_analyze_overdraw

分析可能导致过度绘制的透明对象。

参数类型必填默认值描述
limitint否50结果的最大数量

返回: { success, transparentObjectCount, objects }

optimize_set_lod_group

添加或配置 LOD Group。lodDistances:以逗号分隔的屏幕相对高度(例如 '0.6,0.3,0.1')

参数类型必填默认值描述
namestring否nullGameObject 名称
instanceIdint否0GameObject 实例 ID
pathstring否nullGameObject 层级路径
lodDistancesstring否"0.6,0.3,0.1"以逗号分隔的屏幕相对过渡高度

返回: { success, gameObject, lodLevels, distances }


精确签名

准确的名称、参数、默认值和返回值由 GET /skills/schema 或 unity_skills.get_skill_schema() 定义,而非由此文件定义。

评论

支持 Markdown