AIBridge Prefab Patch
Use prefab patch for complex Prefab asset edits that need multiple operations in one load/save cycle. Use inspector set_property for a single simple serialized field, and inspector set_properties for small batched field edits. Use gameobject、transform、inspector for scene objects. If the requested Prefab/Scene/custom .asset operation is not supported by AIBridge, load unity-yaml-editing and follow its direct UnityYAML rules.
$CLI means the platform-appropriate AIBridge CLI invocation, usually ./.aibridge/cli/AIBridgeCLI.exe on Windows.
参数选择
- Prefer
--ops <file>for multi-step edits, nested JSON, arrays, references, or anything run from PowerShell. - Use
--ops-json <json>only for one or two very small operations. - Put temporary operation files under
.aibridge/patch_ops/. - Always run
--dryRun truebefore writing the prefab.
标准流程
- Find the target prefab with
asset find/search --format paths. - Inspect structure with
prefab get_hierarchy --prefabPath "<prefab>". - Create
.aibridge/patch_ops/<task>.json. - Run dry-run:
bash$CLI prefab patch --prefabPath "Assets/Prefabs/Player.prefab" --ops ".aibridge/patch_ops/player_hp_patch.json" --dryRun true
- If dry-run succeeds, run the same command without
--dryRun true. - Re-check hierarchy/properties, then run
compile unityandget_logs --logType Error.
操作示例
json[ { "op": "ensure_child", "path": "Player/HP" }, { "op": "ensure_component", "path": "Player/HP", "typeName": "Animator" }, { "op": "set_property", "target": { "path": "Player/HP", "componentName": "Animator" }, "propertyName": "m_Enabled", "value": true }, { "op": "set_array", "target": { "path": "Player", "componentName": "YourComponent" }, "propertyName": "items", "items": [ { "key": "HP", "value": { "$gameObject": "Player/HP" } }, { "key": "HPAnimator", "value": { "$component": { "path": "Player/HP", "typeName": "Animator" } } } ] } ]
支持的操作
ensure_child: Ensure a GameObject path exists. Optional fields:active,tag,layer.ensure_component: Ensure a component exists onpath. UsetypeName.set_property: Set one SerializedProperty on a GameObject/component/asset target.set_properties: Set multiple SerializedProperties on one target.set_array: Replace an array property.append_array: Append items to an array property.clear_array: Clear an array property.
不支持时的处理
prefab patch currently does not cover every Unity serialized structure. Use unity-yaml-editing when the task needs unsupported operations such as:
- Scene
.unityobject creation or structure edits not exposed by scene/gameobject/transform/inspector commands. - Prefab Variant override structures, nested modification records, or operations outside the listed patch ops.
- Creating a brand-new Prefab file from text serialization, including paired
.meta, root object, child hierarchy, and component documents. - Adding Prefab documents/components whose schema is not covered by patch ops, after copying the shape from the same Unity version/project.
- ScriptableObjectTable/custom
.assetcreation or structural edits that cannot be represented by Inspector SerializedProperty writes. - Other text-serialized Unity assets (
.mat,.controller,.anim, etc.) requiring direct document/fileID/GUID changes.
引用写法
Use these object reference values inside value or array items:
json{ "$gameObject": "Player/HP" } { "$component": { "path": "Player/HP", "typeName": "Animator" } } { "$asset": "Assets/Materials/HPMat.mat" } { "$guid": "asset-guid" } null
注意事项
- Do not edit Prefab YAML directly unless no Unity/AIBridge API path exists; when required, use
unity-yaml-editing. - For direct YAML fallback, copy component schema from a same-project example, update every
GameObject.m_Component,Transform.m_Children,Transform.m_Father, and componentm_GameObjectreference, then re-import and inspect. - Paths are normalized against the prefab root; both
Root/ChildandChildcan work when unambiguous. - Duplicate child names under the same parent are ambiguous; use exact hierarchy paths.
- Duplicate components of the same type are ambiguous; use
componentIndexwhen needed. - Keep operation JSON under
.aibridge/patch_ops/; do not put it underAssets/or commit it.
References
references/prefab-reference.md: generated CLI reference for generalprefabcommands.


