unity-optimization について
Unity プロジェクト向けの最適化スキル群です。シーンやアセットを分析して問題候補を見つけ、テクスチャ、メッシュ、オーディオの圧縮設定を変更できます。
主な機能
- 01シーンの三角形数とマテリアル使用量の分析
- 02大きなアセットと重複マテリアルの検索
- 03透明オブジェクトのオーバードロー分析
- 04テクスチャ、メッシュ、オーディオ圧縮の一括調整
- 05Static フラグと LOD Group の設定
活用シーン
- 01高ポリゴンやマテリアル過多のシーン要素の特定
- 02サイズしきい値を超えるアセットの検索
- 03アセット圧縮設定の一括変更
- 04GameObject の Static フラグや LOD の設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-optimizationインストール後、Claude Code で/unity-optimizationを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターでスキルを呼び出そうとしている場合は、いったん停止し、まずこのファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。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、圧縮)を最適化します。変更されたテクスチャの一覧を返します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| maxTextureSize | int | No | 2048 | テクスチャの最大サイズ |
| enableCrunch | bool | No | true | Crunch 圧縮を有効にする |
| compressionQuality | int | No | 50 | 圧縮品質 0-100 |
| filter | string | No | "" | アセットフィルター |
Returns: { success, count, message, modified }
optimize_mesh_compression
3D モデルのメッシュ圧縮を設定します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| compressionLevel | string | No | "Medium" | 圧縮レベル:Off/Low/Medium/High |
| filter | string | No | "" | アセットフィルター |
Returns: { success, count, compression, modified }
optimize_analyze_scene
パフォーマンスのボトルネック(ポリゴン数の多いメッシュ、過剰なマテリアル)を検出するため、シーンを分析します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| polyThreshold | int | No | 10000 | ポリゴン数の多いメッシュの警告しきい値となる三角形数 |
| materialThreshold | int | No | 5 | マテリアル数過多の警告しきい値となるマテリアルスロット数 |
Returns: { success, totalRenderers, totalTriangles, totalMaterialSlots, issueCount, issues }
optimize_find_large_assets
サイズのしきい値(KB)を超えるアセットを検索します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| thresholdKB | int | No | 1024 | サイズのしきい値(KB) |
| assetType | string | No | "" | アセットタイプのフィルター(例:Texture2D、AudioClip) |
| limit | int | No | 50 | 結果の最大数 |
Returns: { success, threshold, count, assets }
optimize_set_static_flags
GameObject に静的フラグを設定します。flags はカンマ区切りで、ContributeGI、OccluderStatic、OccludeeStatic、BatchingStatic、ReflectionProbeStatic と、非推奨の 2 つのメンバー NavigationStatic および OffMeshLinkGeneration から指定します。
Everythingが意味するのは、非推奨ではない 5 つのフラグであり、文字どおりすべてではありません。StaticEditorFlagsにはEverythingもNothingも宣言されていないため、この API が両方をエイリアスとして追加しています。Nothingはすべてのビットをクリアし、Everythingは Unity の静的ドロップダウンに現在表示されるメンバーの OR であり、完全な127ではなく数値で87です。NavigationStaticとOffMeshLinkGenerationは非推奨で除外されているため、指定したい場合は名前を明示してください。列挙したパーツはすべて解決できなければなりません。不明な名前が 1 つでもあると、解析できた部分だけを適用するのではなく、呼び出し全体が失敗します。また、列挙型で宣言されたマスク外のビットを含む数値("999")も拒否されます。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| flags | string | いいえ | "Everything" | カンマ区切りの静的フラグ、または Everything / Nothing のエイリアス(上記参照) |
| includeChildren | bool | いいえ | false | すべての子に再帰的に適用します |
戻り値: { success, gameObject, flags, affectedCount }
optimize_get_static_flags
GameObject の静的フラグを取得します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
戻り値: { success, gameObject, flags, isStatic }
optimize_audio_compression
オーディオ圧縮を一括設定します。compressionFormat:PCM/Vorbis/ADPCM。loadType:DecompressOnLoad/CompressedInMemory/Streaming
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| compressionFormat | string | いいえ | "Vorbis" | オーディオ圧縮形式:PCM/Vorbis/ADPCM |
| loadType | string | いいえ | "CompressedInMemory" | オーディオ読み込みタイプ:DecompressOnLoad/CompressedInMemory/Streaming |
| quality | float | いいえ | 0.5 | 圧縮品質 0.0-1.0 |
| filter | string | いいえ | "" | アセットフィルター |
戻り値: { success, count, compressionFormat, loadType, modified }
optimize_find_duplicate_materials
シェーダーとプロパティが同一のマテリアルを検索します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| limit | int | いいえ | 50 | 返す重複グループの最大数 |
戻り値: { success, duplicateGroups, groups }
optimize_analyze_overdraw
オーバードローの原因となる可能性がある透明オブジェクトを分析します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| limit | int | いいえ | 50 | 結果の最大数 |
戻り値: { success, transparentObjectCount, objects }
optimize_set_lod_group
LOD Group を追加または設定します。lodDistances:画面に対する相対高さのカンマ区切りリスト(例:'0.6,0.3,0.1')
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| name | string | いいえ | null | GameObject 名 |
| instanceId | int | いいえ | 0 | GameObject のインスタンス ID |
| path | string | いいえ | null | GameObject の階層パス |
| lodDistances | string | いいえ | "0.6,0.3,0.1" | 画面に対する相対的な遷移高さのカンマ区切りリスト |
戻り値: { success, gameObject, lodLevels, distances }
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく GET /skills/schema または unity_skills.get_skill_schema() で定義されています。