unity-addressables
GitHub自动化管理 Unity Addressables 的资源组、条目、Profile 及内容构建。通过反射调用编辑器 API,支持检查安装状态、创建资源组、切换配置及打包构建,适用于游戏资源管理流程。
Trigger Scenarios
Install
npx skills add Besty0728/Unity-Skills --skill unity-addressables -g -y
SKILL.md
Frontmatter
{
"name": "unity-addressables",
"description": "Manage Addressables groups, entries, profiles and content builds (com.unity.addressables, reflection-based)"
}
Before 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 whether Addressables is installed and configured
- Creating Addressables groups and adding assets to them
- Switching the active Addressables profile
- Building Addressables content
- 检查 Addressables 是否安装与配置、创建资源组并添加资源、切换激活 Profile、构建 Addressables 内容
Unity Addressables Skills
Editor-side automation for Addressables — group CRUD, asset entry assignment, profile switching, and the content build. This is the authoring surface (the AddressableAssetSettings asset); runtime loading code is not a skill.
This module holds zero direct references to the package. Every call resolves through reflection against the Unity.Addressables.Editor assembly, so the UnitySkills Editor assembly compiles identically whether or not Addressables is installed — there is no scripting define to set and no recompile needed after installing.
Requires:
com.unity.addressables(API anchored to 2.x Editor source; the 1.22.x API surface used here is identical). Companion modules: addressables-design for the runtime loading contract and the 1.22.3 / 2.9.1 migration table, yooasset if the project ships hot updates through YooAsset instead, package to install the package.
Guardrails
Two independent preconditions. Failing either returns a structured error, not a permission denial:
- Package installed. Without it every skill except
addressables_check_installedreturnserrorCode: "MISSING_PACKAGE"withrequiredPackage,docsand install instructions. - Settings asset created. The package can be installed while
AddressableAssetSettingsdoes not yet exist. Every skill exceptaddressables_check_installedthen returnserrorCode: "TARGET_NOT_FOUND"telling you to create it from Window > Asset Management > Addressables > Groups. There is deliberately no skill for this step — only the Groups window (or a human) can create the settings singleton.
Always call addressables_check_installed first. It is the only skill that works in both failure states, and its installed / configured pair tells you which precondition is missing.
Operating Mode (v1.9 three-tier):
- SemiAuto —
addressables_check_installed,addressables_group_list,addressables_profile_getrun directly in all three modes without a grant. - FullAuto —
addressables_group_create,addressables_group_add_entry,addressables_profile_set,addressables_buildneed a user grant under Approval (grant triggers one server-side execute returning the result); under Auto / Bypass they run directly with audit only. - Auto-forbidden (NeverInSemi,
SkillOperation.Delete) —addressables_group_deletereturnsMODE_FORBIDDENunder Approval and Auto. Only Bypass or a user-managed Allowlist entry can run it; never attempt a grant for it.
DO NOT (these skills do NOT exist — do not invent them):
addressables_group_remove_entry/addressables_entry_list/addressables_entry_set_address— there is no entry-removal, entry-listing or address-rename skill.addressables_group_listreports onlyentryCountper group. Move an entry withaddressables_group_add_entry; to inspect or remove individual entries use the Addressables Groups window.addressables_profile_create/addressables_profile_set_variable— profiles can be selected but not created or edited here.addressables_group_set_schema/addressables_analyze/addressables_clean_build— group schema editing, the Analyze rules and cache cleaning are not exposed.addressables_settings_create— see precondition 2; the settings asset cannot be created from a skill.
Routing:
- Addressables group / entry / profile authoring and content build → this module.
- Runtime
Addressables.LoadAssetAsynchandle lifecycle,AssetReferenceusage, catalog updates → addressables-design (documentation only; write the code yourself). - Installing
com.unity.addressables→package_installin package. - Building the actual player →
build_player(Project module) or unity-cli.
Skills
Environment (1)
addressables_check_installed
Probe for the package and the settings asset. The only skill that works without either. Call it first.
Parameters: None
Returns installed, configured, packageId, and a hint naming the next action. When installed it adds version (from PackageInfo.FindForAssembly) and settingsPath (null when configured is false).
Groups (4)
addressables_group_list
List every group in the settings asset.
Parameters: None
Returns count plus groups[], each entry carrying name, guid, isDefault, readOnly and entryCount. Use it to resolve a real group name before any group-scoped call.
addressables_group_create
Create a group with the standard BundledAssetGroupSchema + ContentUpdateGroupSchema pair. Not set as the default group and not read-only.
| Parameter | Type | Required | Description |
|---|---|---|---|
groupName |
string | Yes | Desired group name. Rejected when blank. |
Returns groupName (the name that actually landed on disk), requestedName, renamed, guid, and a note when the two differ. See Critical Rule 1 — this skill renames on collision instead of failing.
addressables_group_add_entry
Add an asset to a group by asset path, optionally under a custom address.
| Parameter | Type | Required | Description |
|---|---|---|---|
assetPath |
string | Yes | Project-relative path, e.g. Assets/Prefabs/Enemy.prefab. Resolved via AssetPathToGUID; a miss returns Asset not found. |
groupName |
string | Yes | Target group. Matched case-insensitively; a miss returns Group not found with addressables_group_list as the suggested fix. |
address |
string | No | Custom address. Omit to keep the address Addressables assigns (the asset path for a new entry, the existing address for one being moved). |
Returns assetPath, groupName, address (the final address read back off the entry) and guid.
addressables_group_delete
Remove a group from the settings asset. Auto-forbidden — Bypass or Allowlist only.
| Parameter | Type | Required | Description |
|---|---|---|---|
groupName |
string | Yes | Matched case-insensitively. The default group is refused (Cannot delete default group). |
Returns groupName and deleted. The group's entries are dropped with it; the underlying assets are untouched.
Profiles (2)
addressables_profile_get
Read the active profile and the full profile list.
Parameters: None
Returns activeProfile (the resolved name, falling back to the id when the name cannot be resolved), activeProfileId, and profiles[] — the names accepted by addressables_profile_set.
addressables_profile_set
Switch the active profile by name.
| Parameter | Type | Required | Description |
|---|---|---|---|
profileName |
string | Yes | Must be a name from addressables_profile_get. A miss returns Profile not found with addressables_profile_get as the suggested fix. |
Returns activeProfile, profileId, and changed (false when that profile was already active).
Build (1)
addressables_build
AddressableAssetSettings.BuildPlayerContent() for the current build target. Long-running and blocking — see Critical Rule 3.
Parameters: None
Returns success, duration (seconds), and message. On a build failure it returns success: false with duration and the build system's error; on an exception it returns success: false with error and details.
Critical Rules (must read)
addressables_group_createrenames on collision — always use the returnedgroupName. Addressables dedupes by appending a counter (TestGroup→TestGroup1) rather than failing, so the name you asked for is not necessarily the name on disk. The response reportsrenamed: true, the actualgroupNameand yourrequestedName. FeedingrequestedNameinto a follow-upaddressables_group_add_entryoraddressables_group_deleteis the single most common failure in this module.addressables_group_add_entrymoves, it does not copy. It callsCreateOrMoveEntry, so adding an asset that already belongs to another group relocates it. There is no skill to put one asset in two groups — Addressables does not allow it.addressables_buildblocks the Editor main thread. UnitySkills runs every skill on the main thread through a single queue, so/healthand/jobsstall for the whole build. Raise the client timeout well past the expected build time; a socket timeout does not cancel the build. It is not anAsyncJobServicejob, so there is nojobIdto poll.- Nothing in this module is workflow-undoable. Every mutating skill declares
TracksWorkflow = false, so no pre-snapshot is taken andworkflow_*undo cannot revert a created group, a moved entry, a profile switch or a build. Read the current state first (addressables_group_list/addressables_profile_get) if you need to restore it by hand. - Group lookup is case-insensitive, collision-dedup is not.
addressables_group_add_entryandaddressables_group_deletematchgroupNamewithOrdinalIgnoreCase, somygroupfindsMyGroup.addressables_group_createcompares the returned name ordinally, sorenamedis exact-case. Do not rely on casing to keep two groups distinct. - Every mutation writes the settings asset immediately. Each skill calls
EditorUtility.SetDirty+AssetDatabase.SaveAssets, so changes hitAddressableAssetSettingson disk before the response returns — relevant if the file is under version control. configured: falseis not an error state to retry. It means the settings asset does not exist yet. Retrying any other skill will keep returningTARGET_NOT_FOUND; a human must create it from the Groups window first.
Limitations
- Authoring only. Group creation, entry assignment, profile selection and the content build. Entry enumeration/removal, address renaming, group schema fields, profile variables, labels, the Analyze rules and content-update (
BuildContentUpdate/addressables_content.bin) are all outside the module — use the Addressables Groups window. - Build target is implicit.
addressables_buildbuilds for whateverEditorUserBuildSettings.activeBuildTargetcurrently is; there is no target parameter. Switch the target first if you need a different one. - Version drift is reported, not guessed. Reflection targets are anchored to the Addressables 2.x Editor source. When a member cannot be resolved the skill returns a named error (
CreateGroup method not found on AddressableAssetSettings,Required Addressables group schema types were not found, …) instead of failing silently. - No batch skills. This module defines no
*_batchvariants; adding several assets means oneaddressables_group_add_entrycall each.
Exact Signatures
For authoritative parameter names, defaults, and return fields, query GET /skills/schema?category=Addressables or unity_skills.get_skill_schema(). This document is a routing / best-practice guide, not the signature source.
Version History
- 8c31c5a Current 2026-08-27 12:42


