mcpField
U
unity-yooasset

unity-yooasset

github.com/besty0728開発1.9k67 回インストール今日更新
リポジトリ

unity-yooasset について

Unity YooAsset は、バンドル構築、Collector 設定、レポート分析、PlayMode 検証を自動化する Editor 向けスキルモジュールです。YooAsset 2.3.15 以降を使うプロジェクトが対象です。

主な機能

  1. 01バンドルの構築とシミュレーション
  2. 02Collector 設定の作成と編集
  3. 03ビルドレポートの確認と比較
  4. 04PlayMode でのパッケージ検証
  5. 05AssetArtScanner 設定と実行の管理

活用シーン

  1. 01YooAsset パッケージのバンドル構築
  2. 02アセット収集ルールの調整
  3. 03バンドル依存関係やアセット詳細の確認
  4. 04Editor でのランタイム読み込み確認

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/unity-yooassetを入力して読み込まれたか確認します。

詳細

このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターでスキルを呼び出そうとしている場合は、いったん停止してください。先にこのファイルを読むか、GET /skills/recommend?includeSchema=true でスキーマを取得してください。recommend/schema からすでにパラメーター定義を取得している場合は、そのまま dryRun に進めます。

トリガー

  • YooAsset のリソースパッケージのビルドまたはシミュレーション
  • collector の設定
  • ホットアップデート用リソースの検証
  • YooAsset 资源包构建或模拟、collector 配置、热更新资源校验

Unity YooAsset スキル

YooAsset ホットアップデートフレームワーク向けのエディター側自動化機能です。ビルドパイプラインのオーケストレーション、Collector 設定の CRUD、BuildReport の分析、PlayMode のランタイム検証、および関連する YooAsset ツールを提供します。各スキルは、2.3.18 のソースで検証された、具体的な YooAsset Editor/runtime API の呼び出し経路をラップします。パッケージが存在しない場合、yooasset_check_installed を除くすべてのスキルは、インストール手順を含む NoYooAsset() エラーを返します。

要件:com.tuyoogame.yooasset ≥ 2.3.15、Unity 2022.3+(2.3.18 に対して検証済み)。 強く推奨:YooAsset のランタイムコードを書く前に、yooasset-design を読み込んでください。PlayMode、パラメータークラス、ハンドルのライフサイクルに関する落とし穴は厳格であり、これらについて注意喚起するのはアドバイザリーモジュールだけです。

ガードレール

動作モード(v1.9 の 3 段階):

  • 承認(デフォルト):クエリ/一覧表示/読み取りスキル(yooasset_check_installed、yooasset_get_default_paths、yooasset_get_build_settings、yooasset_list_collector_packages、yooasset_list_collector_rules、yooasset_list_assetart_scanners、yooasset_runtime_get_validation_result、yooasset_load_build_report、yooasset_list_report_bundles、yooasset_get_bundle_detail、yooasset_list_report_assets、yooasset_get_asset_detail、yooasset_get_dependency_graph、yooasset_compare_build_reports、yooasset_list_independ_assets)は直接実行されます。ビルダー/Collector の変更操作/スキャナーの実行/ウィンドウを開く操作は FullAuto です。MODE_RESTRICTED の場合は、許可プロトコルを実行します。

  • 自動/バイパス:SemiAuto と FullAuto は直接実行されます。

  • このモジュールで自動実行が禁止されている操作:

    • MayEnterPlayMode = true → yooasset_runtime_validate_package、yooasset_runtime_cleanup
    • SkillOperation.Delete → yooasset_remove_collector_package、yooasset_remove_collector_group、yooasset_remove_collector

    バイパスモード、またはユーザー管理の Allowlist エントリーを通じてのみ実行できます。許可フローは MODE_FORBIDDEN を返します。yooasset_build_bundles は大規模なディスク I/O を実行しますが、Reload/PlayMode フラグがないため、許可の対象になります。

  • com.tuyoogame.yooasset が見つからない場合、yooasset_check_installed 以外のすべてのスキルは、インストール手順を含む NoYooAsset() エラーを返します。

禁止事項(よくある誤り):

  • yooasset_initialize/yooasset_load_asset/yooasset_create_downloader は、汎用 REST スキルとしては存在しません。ランタイム API(YooAssets.Initialize、デフォルトパッケージの YooAssets.LoadAssetAsync、ResourcePackage.LoadAssetAsync、RequestPackageVersionAsync、CreateResourceDownloader)はゲームコードに記述します。ランタイムコードを書くときは yooasset-design を使用してください。
  • yooasset_modify_group/yooasset_delete_collector/yooasset_open_scanner_window は誤った名前です。以下のスキーマ名を正確に使用するか、GET /skills/schema?category=YooAsset に問い合わせてください。
  • yooasset_install はスキルではありません。パッケージのインストールは Package Manager でユーザーが行う操作です。
  • yooasset_build_bundles に timeout を渡さないでください。このプロパティは YooAsset 2.3.16 で削除されました。ランタイムのウォッチドッグは現在 CacheFileSystemParameters.DOWNLOAD_WATCH_DOG_TIME にあります(ランタイム上の設定であり、ビルドパラメーターではありません)。
  • EditorUserBuildSettings.isBuildingPlayer == true の間は yooasset_build_bundles を呼び出さないでください。BuildParameters.CheckBuildParameters が例外をスローします。

ルーティング:

  • Collector の設定(パッケージ、グループ、Collector、ルール)→ このモジュール。
  • 実際のバンドルビルド+シミュレーション+パス → このモジュール。
  • ビルドレポートの分析(バンドルサイズ、アセット一覧/詳細、依存関係グラフ、レポート比較、孤立アセット)→ このモジュール。
  • Editor PlayMode でのランタイム検証 → yooasset_runtime_validate_package + このモジュールのポーリング/クリーンアップスキル。
  • ランタイムコードの生成/設計(ゲームスクリプトでの Initialize/Load/Download/Scene)→ yooasset-design を使って自分で記述してください。
  • YooAsset の関連ウィンドウと AssetArtScanner の設定/実行 → このモジュール。
  • バージョンポリシーの判断(2.x と 2.3.15 より前のマニフェストの比較、IFilterRule の FindAssetType)→ yooasset-design/PITFALLS.md。

スキル

環境(1)
スキル目的主なパラメーター
yooasset_check_installedリフレクションプローブ。パッケージがない場合でも動作します。ランタイムアセンブリ、パッケージバージョン、エディターの利用可否、および 4 つのパイプラインのうちどれが存在するかを報告します。(なし)
ビルドパイプライン(7)
スキル目的主なパラメーター
yooasset_build_bundlesScriptableBuildPipeline または RawFileBuildPipeline を使用してバンドルをビルドします。<projectPath>/Bundles/<PackageName>/<Version> に書き込みます。packageName, packageVersion="auto", pipeline="ScriptableBuildPipeline", buildTarget?, compression="LZ4", fileNameStyle="HashName", clearBuildCache=false, useAssetDependencyDB=true, verifyBuildingResult=true, replaceAssetPathWithAddress=false, stripUnityVersion=false, disableWriteTypeTree=false, trackSpriteAtlasDependencies=false, writeLinkXML=true, cacheServerHost="", cacheServerPort=0, builtinShadersBundleName="", monoScriptsBundleName="", includePathInHash=false, buildinFileCopyOption="None", buildinFileCopyParams="", enableLog=true
yooasset_simulate_buildEditorSimulateMode パッケージに対して AssetBundleSimulateBuilder.SimulateBuild を実行します。仮想バンドルのみを対象とし、ファイルは書き込みません。packageName
yooasset_get_default_pathsYooAsset が使用する BuildOutputRoot と StreamingAssetsRoot を返します。(なし)
yooasset_get_build_settingsパッケージ/パイプラインの永続化された YooAsset AssetBundle Builder EditorPrefs を読み取ります。packageName, pipeline?
yooasset_set_build_settings繰り返し使用できるビルド UI のデフォルト設定として、AssetBundle Builder EditorPrefs を永続化します。packageName, pipeline?, compression?, fileNameStyle?, buildinFileCopyOption?, buildinFileCopyParams?, encryptionServicesClassName?, manifestProcessServicesClassName?, manifestRestoreServicesClassName?, clearBuildCache?, useAssetDependencyDB?
yooasset_open_builder_windowYooAsset の AssetBundle Builder エディターウィンドウを開きます。(なし)
yooasset_open_collector_windowYooAsset の AssetBundle Collector エディターウィンドウを開きます。(なし)
YooAsset ツール(8)
スキル目的主なパラメーター
yooasset_open_reporter_windowYooAsset AssetBundle Reporter ウィンドウを開きます。(なし)
yooasset_open_debugger_windowYooAsset AssetBundle Debugger ウィンドウを開きます。(なし)
yooasset_open_assetart_scanner_windowYooAsset AssetArt Scanner ウィンドウを開きます。(なし)
yooasset_list_assetart_scannersAssetArtScanner の設定を一覧表示します。キーワードで絞り込むこともできます。keyword?
yooasset_run_assetart_scanner1 つのスキャナーを実行し、任意でレポートファイルを保存します。scannerGUID, saveDirectory?
yooasset_run_all_assetart_scannersすべてのスキャナーを実行します。キーワードで絞り込むこともできます。keyword?
yooasset_import_assetart_scanner_configAssetArtScanner の JSON 設定をインポートします。configPath
yooasset_export_assetart_scanner_configAssetArtScanner の JSON 設定をエクスポートします。configPath
ランタイム検証(3)
スキル目的主なパラメーター
yooasset_runtime_validate_package非同期の PlayMode ジョブを開始し、EditorSimulateMode を初期化してデフォルトパッケージを設定します。任意で 1 つのアセットのロード/解放とダウンローダーの状態を検証した後、任意でクリーンアップを行い、Edit Mode に戻ります。packageName, assetLocation?, restoreEditMode=true, cleanup=true, checkDownloader=true, downloadingMaxNumber=4, failedTryAgain=1
yooasset_runtime_get_validation_resultランタイム検証ジョブの状態/結果をポーリングします。jobId
yooasset_runtime_cleanup完了した検証ジョブを削除し、任意で YooAssets.Destroy() の強制実行や PlayMode の終了を行います。jobId?, forceYooAssetsDestroy=false, exitPlayMode=false
コレクターの設定(13)
スキル目的主なパラメーター
yooasset_list_collector_packagesパッケージ → グループ → コレクターのツリーを一覧表示します。verbose=true にすると、すべての階層を表示します。verbose=false
yooasset_list_collector_rules登録済みの Active/Address/Pack/Filter/Ignore ルールクラスを返します。ruleKind="all"(または `activeRule
yooasset_create_collector_package新しいコレクターパッケージを作成します。allowDuplicate=true でない場合、重複があると失敗します。packageName, allowDuplicate=false
yooasset_create_collector_group既存のパッケージ内にグループを作成します。packageName, groupName, groupDesc="", activeRule="EnableGroup", assetTags=""
yooasset_add_collectorグループに AssetBundleCollector を追加します。AssetDatabase を使って collectPath を検証し、各ルールを登録済みのクラス名と照合して検証します。packageName, groupName, collectPath, collectorType="MainAssetCollector", addressRule="AddressByFileName", packRule="PackDirectory", filterRule="CollectAll", assetTags="", userData=""
yooasset_save_collector_configAssetBundleCollectorSetting.asset を保存します。必要に応じて FixFile() を実行し、参照先が存在しないルールを修復できます。fixErrors=true
yooasset_modify_collector_settingsグローバルなコレクター設定を変更します。showPackageView=false, uniqueBundleName=false, save=true
yooasset_modify_collector_packageパッケージ名や説明を変更し、パッケージ単位のオプションを設定します。packageName, packageDesc?, newPackageName?, enableAddressable=false, supportExtensionless=true, locationToLower=false, includeAssetGUID=false, autoCollectShaders=true, ignoreRule="NormalIgnoreRule", save=true
yooasset_remove_collector_package名前を指定してコレクターパッケージを削除します。packageName, save=true
yooasset_modify_collector_groupグループ名や説明を変更し、アクティブルールとタグを更新します。packageName, groupName, newGroupName?, groupDesc?, activeRule="EnableGroup", assetTags?, save=true
yooasset_remove_collector_groupパッケージからグループを削除します。packageName, groupName, save=true
yooasset_modify_collectorcollectPath に一致する既存のコレクターを変更します。packageName, groupName, collectPath, newCollectPath?, collectorType="MainAssetCollector", addressRule="AddressByFileName", packRule="PackDirectory", filterRule="CollectAll", assetTags?, userData?, save=true
yooasset_remove_collectorcollectPath に一致するコレクターを削除します。packageName, groupName, collectPath, save=true
ビルドレポートの分析(8)
スキル目的主なパラメーター
yooasset_load_build_reportYooAsset のビルドレポート .report ファイルをデシリアライズし、ReportSummary のメタデータとトップレベルの合計値を返します。reportPath
yooasset_list_report_bundlesレポートからバンドルの一覧をページ分割、フィルター、並べ替えして取得します。reportPath, filterEncrypted?, filterTag?, sortBy="size" (`size
yooasset_get_bundle_detail単一バンドルの完全な ReportBundleInfo を取得します。DependBundles、ReferenceBundles、アセットの BundleContents が含まれます。reportPath, bundleName
yooasset_list_report_assetsレポートからアセットの一覧をページ分割、フィルター、並べ替えして取得します。reportPath, filterBundle?, filterTag?, search?, sortBy="path" (`path
yooasset_get_asset_detailアセットパスまたはアドレスを指定して、完全な ReportAssetInfo を取得します。reportPath, assetPath?, address?
yooasset_get_dependency_graph可視化または対象を絞った分析に使える、コンパクトなバンドル/アセット依存関係グラフを取得します。reportPath, rootBundle?, rootAssetPath?, maxNodes=200
yooasset_compare_build_reports2 つの .report ファイルを比較し、バンドル/アセットの追加、削除、サイズ変更を確認します。oldReportPath, newReportPath, limit=100
yooasset_list_independ_assetsメインアセットから参照されていないアセットを取得します。クリーンアップ候補です。reportPath, limit=100, offset=0

クイックスタート

import unity_skills as u

# 0. Probe installation (works even if package is missing)
u.call_skill("yooasset_check_installed")
# -> { installed, packageVersion, availablePipelines: [...], editorAvailable, ... }

# 1. Configure collectors (end-to-end)
u.call_skill("yooasset_list_collector_rules", ruleKind="all")  # discover available rule class names
u.call_skill("yooasset_create_collector_package", packageName="DefaultPackage")
u.call_skill("yooasset_create_collector_group",
    packageName="DefaultPackage", groupName="UI", activeRule="EnableGroup",
    assetTags="ui")
u.call_skill("yooasset_add_collector",
    packageName="DefaultPackage", groupName="UI",
    collectPath="Assets/GameRes/UI",
    collectorType="MainAssetCollector",
    addressRule="AddressByFileName",
    packRule="PackDirectory",
    filterRule="CollectAll")
u.call_skill("yooasset_modify_collector_package",
    packageName="DefaultPackage",
    enableAddressable=True,
    supportExtensionless=True,
    locationToLower=False)
u.call_skill("yooasset_save_collector_config", fixErrors=True)

# 2. Simulate build (EditorSimulateMode) — fast, no file I/O
u.call_skill("yooasset_simulate_build", packageName="DefaultPackage")
# -> { packageRootDirectory: ".../Bundles/DefaultPackage/Simulate" }

# 3. Real build
result = u.call_skill("yooasset_build_bundles",
    packageName="DefaultPackage",
    packageVersion="1.0.0",
    pipeline="ScriptableBuildPipeline",
    compression="LZ4",
    fileNameStyle="HashName",
    verifyBuildingResult=True)

# 4. Analyze the report
import os
report_path = os.path.join(
    result["outputDirectory"],
    f"{result['packageName']}_{result['packageVersion']}.report")
u.call_skill("yooasset_load_build_report", reportPath=report_path)
u.call_skill("yooasset_list_report_bundles", reportPath=report_path, sortBy="size", limit=20)
u.call_skill("yooasset_list_report_assets", reportPath=report_path, search="UI", limit=20)
u.call_skill("yooasset_get_dependency_graph", reportPath=report_path, maxNodes=100)
u.call_skill("yooasset_list_independ_assets", reportPath=report_path)

# 5. Optional PlayMode runtime validation
job = u.call_skill("yooasset_runtime_validate_package",
    packageName="DefaultPackage",
    assetLocation="ui/example",
    restoreEditMode=True,
    cleanup=True)
u.call_skill("yooasset_runtime_get_validation_result", jobId=job["jobId"])

重要なルール(必ずお読みください)

  1. yooasset_check_installed は、YOO_ASSET コンパイル定義がなくても動作する唯一のスキルです。 それ以外のスキルはすべて NoYooAsset() を返します。再試行する前に、パッケージをインストールまたはアップグレードし、Unity の再コンパイルを待って環境を整えてください。
  2. パイプラインとパラメーターの組み合わせは厳密に適用されます。 yooasset_build_bundles pipeline=ScriptableBuildPipeline には ScriptableBuildParameters を、pipeline=RawFileBuildPipeline には RawFileBuildParameters を使用します。EditorSimulateBuildPipeline はここでは拒否されるため、yooasset_simulate_build を使用してください。BuiltinBuildPipeline はレガシーであり、明示的に拒否されます。
  3. packageVersion="auto" は DateTime.UtcNow.ToString("yyyyMMddHHmm") を設定します。 決定的なバージョン管理を行う場合は、semver 文字列を渡してください。
  4. yooasset_add_collector は AssetDatabase.LoadAssetAtPath を使用して collectPath を検証します。 パスは Assets/... 配下である必要があります。絶対パスまたは相対パスの ../ は失敗します。
  5. Create スキルで指定するルール名は、表示名ではなくクラス名です。 有効な値(例:EnableGroup、AddressByFileName、PackDirectory、CollectAll、NormalIgnoreRule)を確認するには、yooasset_list_collector_rules を使用してください。
  6. Collector の変更は即時保存することも、まとめて保存することもできます。 Create スキルは IsDirty=true に設定します。変更/削除スキルでは save=true を指定できます。一括編集する場合は save=false を渡し、最後に yooasset_save_collector_config を実行してください。
  7. yooasset_build_bundles は Undo の追跡対象ではありません(シーン/アセットの状態ではなく、外部ファイル I/O を行うためです)。clearBuildCache=true にするとパイプライン全体を再実行します。インクリメンタルビルドを高速化するため、デフォルトでは再実行しません。
  8. BuildReport は .report ファイルとしてバンドルと同じ場所に保存されます。YooAsset 2.3.18 では、<BuildOutputRoot>/<BuildTarget>/<PackageName>/<Version>/<PackageName>_<PackageVersion>.report として書き込まれます。BuildReport.json、<PackageName>_<PackageVersion>.json、または buildlogtep.json を渡さないでください。.json ファイルはパッケージマニフェストであり、buildlogtep.json は Scriptable Build Pipeline のトレースログです。yooasset_list_report_bundles は .report ファイルを単独で読み取るため、アーカイブしたコピーを指定することもできます。
  9. 実行時の検証では PlayMode に入る場合があります。 yooasset_runtime_validate_package は意図的に非同期で動作します。ジョブの結果をポーリングし、エディターを望まない状態のままにした場合は yooasset_runtime_cleanup を使用してください。
  10. yooasset_list_independ_assets は、どのメインアセットからも参照されていないアセットを特定します。Collector で除外できる候補です。削除する前に手動で確認してください。後から作成されるメインアセットがそれらを必要とする場合があります。

バージョンの対象範囲

  • 対象:YooAsset 2.3.18(2025-12-04 公開)。ソースアンカーはこのバージョンを使用しています。
  • 最小バージョン:2.3.15(asmdef の versionDefines エントリーによって適用)。それ以前のバージョンは、互換性のないマニフェスト形式と FindAssetType より前の IFilterRule を使用しているため、この Skill モジュールに対してコンパイルできません。
  • 2.3.17 では重大な CRC 検証バグが修正されました。2.3.15/2.3.16 を使用しているユーザーは、verifyBuildingResult=true を利用する前にアップグレードしてください。
  • 実行時側のルール(PlayMode のマッピング、ハンドルのライフサイクル、更新フロー、レガシー API からの移行)については、yooasset-design/SKILL.md を参照してください。

正確なシグネチャ

パラメーター名、デフォルト値、戻り値のフィールドを確認するには、GET /skills/schema?category=YooAsset または unity_skills.get_skill_schema() を照会してください。このドキュメントはルーティングとベストプラクティスのガイドであり、シグネチャの参照元ではありません。

コメント