unity-yooasset について
Unity YooAsset は、バンドル構築、Collector 設定、レポート分析、PlayMode 検証を自動化する Editor 向けスキルモジュールです。YooAsset 2.3.15 以降を使うプロジェクトが対象です。
主な機能
- 01バンドルの構築とシミュレーション
- 02Collector 設定の作成と編集
- 03ビルドレポートの確認と比較
- 04PlayMode でのパッケージ検証
- 05AssetArtScanner 設定と実行の管理
活用シーン
- 01YooAsset パッケージのバンドル構築
- 02アセット収集ルールの調整
- 03バンドル依存関係やアセット詳細の確認
- 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_cleanupSkillOperation.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_bundles | ScriptableBuildPipeline または 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_build | EditorSimulateMode パッケージに対して AssetBundleSimulateBuilder.SimulateBuild を実行します。仮想バンドルのみを対象とし、ファイルは書き込みません。 | packageName |
yooasset_get_default_paths | YooAsset が使用する 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_window | YooAsset の AssetBundle Builder エディターウィンドウを開きます。 | (なし) |
yooasset_open_collector_window | YooAsset の AssetBundle Collector エディターウィンドウを開きます。 | (なし) |
YooAsset ツール(8)
| スキル | 目的 | 主なパラメーター |
|---|---|---|
yooasset_open_reporter_window | YooAsset AssetBundle Reporter ウィンドウを開きます。 | (なし) |
yooasset_open_debugger_window | YooAsset AssetBundle Debugger ウィンドウを開きます。 | (なし) |
yooasset_open_assetart_scanner_window | YooAsset AssetArt Scanner ウィンドウを開きます。 | (なし) |
yooasset_list_assetart_scanners | AssetArtScanner の設定を一覧表示します。キーワードで絞り込むこともできます。 | keyword? |
yooasset_run_assetart_scanner | 1 つのスキャナーを実行し、任意でレポートファイルを保存します。 | scannerGUID, saveDirectory? |
yooasset_run_all_assetart_scanners | すべてのスキャナーを実行します。キーワードで絞り込むこともできます。 | keyword? |
yooasset_import_assetart_scanner_config | AssetArtScanner の JSON 設定をインポートします。 | configPath |
yooasset_export_assetart_scanner_config | AssetArtScanner の 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_config | AssetBundleCollectorSetting.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_collector | collectPath に一致する既存のコレクターを変更します。 | packageName, groupName, collectPath, newCollectPath?, collectorType="MainAssetCollector", addressRule="AddressByFileName", packRule="PackDirectory", filterRule="CollectAll", assetTags?, userData?, save=true |
yooasset_remove_collector | collectPath に一致するコレクターを削除します。 | packageName, groupName, collectPath, save=true |
ビルドレポートの分析(8)
| スキル | 目的 | 主なパラメーター |
|---|---|---|
yooasset_load_build_report | YooAsset のビルドレポート .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_reports | 2 つの .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"])
重要なルール(必ずお読みください)
yooasset_check_installedは、YOO_ASSETコンパイル定義がなくても動作する唯一のスキルです。 それ以外のスキルはすべてNoYooAsset()を返します。再試行する前に、パッケージをインストールまたはアップグレードし、Unity の再コンパイルを待って環境を整えてください。- パイプラインとパラメーターの組み合わせは厳密に適用されます。
yooasset_build_bundles pipeline=ScriptableBuildPipelineにはScriptableBuildParametersを、pipeline=RawFileBuildPipelineにはRawFileBuildParametersを使用します。EditorSimulateBuildPipelineはここでは拒否されるため、yooasset_simulate_buildを使用してください。BuiltinBuildPipelineはレガシーであり、明示的に拒否されます。 packageVersion="auto"はDateTime.UtcNow.ToString("yyyyMMddHHmm")を設定します。 決定的なバージョン管理を行う場合は、semver 文字列を渡してください。yooasset_add_collectorはAssetDatabase.LoadAssetAtPathを使用してcollectPathを検証します。 パスはAssets/...配下である必要があります。絶対パスまたは相対パスの../は失敗します。- Create スキルで指定するルール名は、表示名ではなくクラス名です。 有効な値(例:
EnableGroup、AddressByFileName、PackDirectory、CollectAll、NormalIgnoreRule)を確認するには、yooasset_list_collector_rulesを使用してください。 - Collector の変更は即時保存することも、まとめて保存することもできます。 Create スキルは
IsDirty=trueに設定します。変更/削除スキルではsave=trueを指定できます。一括編集する場合はsave=falseを渡し、最後にyooasset_save_collector_configを実行してください。 yooasset_build_bundlesは Undo の追跡対象ではありません(シーン/アセットの状態ではなく、外部ファイル I/O を行うためです)。clearBuildCache=trueにするとパイプライン全体を再実行します。インクリメンタルビルドを高速化するため、デフォルトでは再実行しません。- 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ファイルを単独で読み取るため、アーカイブしたコピーを指定することもできます。 - 実行時の検証では PlayMode に入る場合があります。
yooasset_runtime_validate_packageは意図的に非同期で動作します。ジョブの結果をポーリングし、エディターを望まない状態のままにした場合はyooasset_runtime_cleanupを使用してください。 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() を照会してください。このドキュメントはルーティングとベストプラクティスのガイドであり、シグネチャの参照元ではありません。