Agent SkillsBesty0728/Unity-Skills › unity-scriptableobject

unity-scriptableobject

GitHub

管理Unity ScriptableObject资产,支持创建、编辑、查找及JSON导入导出。提供反射与序列化属性设置方法,明确半自动与全自动模式,纠正常见幻觉调用。

SkillsForUnity/unity-skills~/skills/scriptableobject/SKILL.md Besty0728/Unity-Skills

Trigger Scenarios

创建或编辑ScriptableObject数据资产 查找SO实例 脚本化管理SO

Install

npx skills add Besty0728/Unity-Skills --skill unity-scriptableobject -g -y
More Options

Non-standard path

npx skills add https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/scriptableobject -g -y

Use without installing

npx skills use Besty0728/Unity-Skills@unity-scriptableobject

指定 Agent (Claude Code)

npx skills add Besty0728/Unity-Skills --skill unity-scriptableobject -a claude-code -g -y

安装 repo 全部 skill

npx skills add Besty0728/Unity-Skills --all -g -y

预览 repo 内 skill

npx skills add Besty0728/Unity-Skills --list

SKILL.md

Frontmatter
{
    "name": "unity-scriptableobject",
    "description": "Manage ScriptableObject assets. 管理 ScriptableObject 资产。"
}

Triggers

  • Creating or editing SO data assets
  • Finding SO instances
  • Scripting SO management
  • 创建或编辑 ScriptableObject 数据资产、查找 SO 实例、脚本化管理 SO

ScriptableObject Skills

Create and manage ScriptableObject assets.

Operating Mode

  • Approval:本模块 Mixed —— scriptableobject_get / scriptableobject_get_serialized_properties / scriptableobject_list_types / scriptableobject_find / scriptableobject_export_jsonSkillMode.SemiAuto,可直接执行;写类 skill (scriptableobject_create / scriptableobject_set / scriptableobject_set_batch / scriptableobject_set_serialized_property / scriptableobject_set_serialized_property_batch / scriptableobject_duplicate / scriptableobject_import_json) 标 SkillMode.FullAuto,需 grant 单次执行返结果。
  • Auto / Bypass:FullAuto 直接执行。
  • 含 NeverInSemi 高危 skillscriptableobject_delete(Operation.Delete)。该 skill 在 Approval/Auto 下返 MODE_FORBIDDEN,仅 Bypass 或 Allowlist 命中可调。

DO NOT (common hallucinations):

  • scriptableobject_create_type does not exist → create SO scripts via script_create with template "ScriptableObject"
  • scriptableobject_get_properties / scriptableobject_read do not exist → use scriptableobject_get (reflection view) or scriptableobject_get_serialized_properties (Inspector/serialized view)
  • scriptableobject_set_property / scriptableobject_set_field do not exist → use scriptableobject_set (top-level public field) or scriptableobject_set_serialized_property (nested/array/reference/private)
  • scriptableobject_save does not exist → changes are auto-saved to the asset

Routing:

  • For ScriptableObject script creation → use script module with template "ScriptableObject"
  • For JSON import/export → scriptableobject_import_json / scriptableobject_export_json (this module)
  • Choosing a setter: scriptableobject_set / scriptableobject_set_batch only reach top-level public simple fields (reflection). For nested paths, arrays/lists, object references, private [SerializeField] fields, gradients, curves and [Flags] enums → scriptableobject_set_serialized_property (+ _batch).

Skills

scriptableobject_create

Create a new ScriptableObject asset. Parameters:

  • typeName (string): ScriptableObject type name.
  • savePath (string): Asset save path.

scriptableobject_get

Get properties of a ScriptableObject. Parameters:

  • assetPath (string): Asset path.

scriptableobject_set

Set a top-level public field/property on a ScriptableObject via reflection. For nested paths, arrays, object references or private [SerializeField] fields use scriptableobject_set_serialized_property. Parameters:

  • assetPath (string): Asset path.
  • fieldName (string): Field or property name.
  • value (string): Value to set.

scriptableobject_list_types

List available ScriptableObject types in the project. Parameters:

  • filter (string, optional): Filter by name.

scriptableobject_duplicate

Duplicate a ScriptableObject asset. Parameters:

  • assetPath (string): Source asset path to duplicate.

scriptableobject_set_batch

Set multiple fields on a ScriptableObject at once. fields: JSON object {fieldName: value, ...}

Parameter Type Required Default Description
assetPath string Yes - Asset path of the ScriptableObject
fields string Yes - JSON object with field-value pairs, e.g. {"fieldName": "value", ...}

Returns: { success, fieldsSet }

scriptableobject_get_serialized_properties

List Inspector serialized properties of a ScriptableObject asset — propertyPath, type, and current value for every serialized field, including private [SerializeField] and nested/array children. Use the returned propertyPath values with scriptableobject_set_serialized_property.

Parameter Type Required Default Description
assetPath string Yes - Asset path of the ScriptableObject
includeChildren bool No true Recurse into nested/array child properties
limit int No 200 Maximum number of properties to return

Returns: { success, path, typeName, properties: [{ propertyPath, name, displayName, propertyType, type, isArray, editable, value }] }

scriptableobject_set_serialized_property

Set a single Inspector serialized property by propertyPath. Works where scriptableobject_set cannot: nested fields, arrays/lists, UnityEngine.Object references, private [SerializeField] fields, gradients, animation curves, and [Flags] enums.

Parameter Type Required Default Description
assetPath string Yes - Asset path of the target ScriptableObject
propertyPath string Yes - Serialized property path (see syntax below); speed auto-falls back to m_Speed / _speed
value string No null Value to set (format depends on property type)
valueAssetPath string No null For ObjectReference properties: asset path of the asset to reference
valueObjectType string No null Optional type filter for the referenced asset (e.g. "Sprite", useful for sub-assets)

propertyPath syntax:

  • Top-level field: speed
  • Nested field: stats.maxHp
  • Array/List element: items.Array.data[2]
  • Array/List resize: items.Array.size with value: "5" (resize first, then set elements)

Value formats:

  • Primitives: "3.5" / "true" / "hello"; Vector: "1,2,3"; Color: "1,0,0,1"; Enum: index or name
  • [Flags] enum: comma-separated names "Fire,Ice" (also |), or a raw bitmask number ("3", "-1" = Everything)
  • ObjectReference: pass valueAssetPath: "Assets/Icons/sword.png" (optionally valueObjectType); clear with value: "null"
  • Gradient: {"colorKeys":[{"color":"1,0,0,1","time":0},{"color":"0,0,1,1","time":1}],"alphaKeys":[{"alpha":1,"time":0},{"alpha":1,"time":1}],"mode":"Blend"}
  • AnimationCurve: {"keys":[{"time":0,"value":0},{"time":1,"value":1,"inTangent":2,"outTangent":2}],"preWrapMode":"ClampForever","postWrapMode":"Loop"}

Returns: { success, assetPath, propertyPath, valueSet }. Unknown propertyPath returns error plus availableProperties (first 60) for self-correction.

scriptableobject_set_serialized_property_batch

Set multiple Inspector serialized properties on one ScriptableObject asset in a single call.

Parameter Type Required Default Description
assetPath string Yes - Asset path of the target ScriptableObject
items string Yes - JSON array of {propertyPath, value, valueAssetPath, valueObjectType}

Example items: [{"propertyPath":"items.Array.size","value":"2"},{"propertyPath":"items.Array.data[0]","value":"101"},{"propertyPath":"icon","valueAssetPath":"Assets/Icons/sword.png"}]

Returns: { success, totalItems, successCount, failCount, results }

scriptableobject_delete

Delete a ScriptableObject asset.

Parameter Type Required Default Description
assetPath string Yes - Asset path of the ScriptableObject to delete

Returns: { success, deleted }

scriptableobject_find

Find ScriptableObject assets by type name.

Parameter Type Required Default Description
typeName string Yes - ScriptableObject type name to search for
searchPath string No "Assets" Folder path to search within
limit int No 50 Maximum number of results to return

Returns: { success, count, assets }

scriptableobject_export_json

Export a ScriptableObject to JSON.

Parameter Type Required Default Description
assetPath string Yes - Asset path of the ScriptableObject to export
savePath string No null File path to save the JSON output; if omitted, JSON is returned inline

Returns: { success, path } or { success, json }

scriptableobject_import_json

Import JSON data into a ScriptableObject. Two accepted formats:

  • Bare field object {"hp": 100, "title": "Boss"} — auto-wrapped into {"MonoBehaviour": {...}} before applying
  • The {"MonoBehaviour": {...}} envelope produced by scriptableobject_export_json
Parameter Type Required Default Description
assetPath string Yes - Asset path of the target ScriptableObject
json string No null JSON string to import
jsonFilePath string No null Path to a JSON file to read and import

Returns: { success, assetPath }. If no serialized field changed (field names did not match, or values already equal), returns success: true plus a warning — treat the warning as "nothing was written" and verify field names against scriptableobject_export_json output.


Exact Signatures

Exact names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.

Version History

  • 25d511e Current 2026-08-13 09:15

    压缩75个SKILL.md描述至约5191字符,并将路由说明移至Triggers章节

  • 14e175d 2026-07-19 18:07

    新增 scriptableobject_get_serialized_properties、scriptableobject_find、scriptableobject_set_serialized_property 及其批量版本等技能;更新DO NOT列表以纠正常见幻觉并细化路由指引。

  • ec9f870 2026-07-05 14:41

Same Skill Collection

SkillsForUnity/unity-skills~/skills/addressables-design/SKILL.md
SkillsForUnity/unity-skills~/skills/adr/SKILL.md
SkillsForUnity/unity-skills~/skills/animator/SKILL.md
SkillsForUnity/unity-skills~/skills/architecture/SKILL.md
SkillsForUnity/unity-skills~/skills/asmdef/SKILL.md
SkillsForUnity/unity-skills~/skills/asset/SKILL.md
SkillsForUnity/unity-skills~/skills/async/SKILL.md
SkillsForUnity/unity-skills~/skills/batch/SKILL.md
SkillsForUnity/unity-skills~/skills/behavior/SKILL.md
SkillsForUnity/unity-skills~/skills/blueprints/SKILL.md
SkillsForUnity/unity-skills~/skills/bookmark/SKILL.md
SkillsForUnity/unity-skills~/skills/camera/SKILL.md
SkillsForUnity/unity-skills~/skills/cinemachine/SKILL.md
SkillsForUnity/unity-skills~/skills/cleaner/SKILL.md
SkillsForUnity/unity-skills~/skills/console/SKILL.md
SkillsForUnity/unity-skills~/skills/debug/SKILL.md
SkillsForUnity/unity-skills~/skills/decal/SKILL.md
SkillsForUnity/unity-skills~/skills/dotween-design/SKILL.md
SkillsForUnity/unity-skills~/skills/dotween/SKILL.md
SkillsForUnity/unity-skills~/skills/editor/SKILL.md
SkillsForUnity/unity-skills~/skills/event/SKILL.md
SkillsForUnity/unity-skills~/skills/gameobject/SKILL.md
SkillsForUnity/unity-skills~/skills/graphics/SKILL.md
SkillsForUnity/unity-skills~/skills/history/SKILL.md
SkillsForUnity/unity-skills~/skills/hybridclr/SKILL.md
SkillsForUnity/unity-skills~/skills/inspector/SKILL.md
SkillsForUnity/unity-skills~/skills/light/SKILL.md
SkillsForUnity/unity-skills~/skills/material/SKILL.md
SkillsForUnity/unity-skills~/skills/navmesh/SKILL.md
SkillsForUnity/unity-skills~/skills/netcode-design/SKILL.md
SkillsForUnity/unity-skills~/skills/netcode/SKILL.md
SkillsForUnity/unity-skills~/skills/package/SKILL.md
SkillsForUnity/unity-skills~/skills/patterns/SKILL.md
SkillsForUnity/unity-skills~/skills/perception/SKILL.md
SkillsForUnity/unity-skills~/skills/performance/SKILL.md
SkillsForUnity/unity-skills~/skills/physics/SKILL.md
SkillsForUnity/unity-skills~/skills/postprocess/SKILL.md
SkillsForUnity/unity-skills~/skills/primetween-design/SKILL.md
SkillsForUnity/unity-skills~/skills/primetween/SKILL.md
SkillsForUnity/unity-skills~/skills/probuilder/SKILL.md
SkillsForUnity/unity-skills~/skills/profiler/SKILL.md
SkillsForUnity/unity-skills~/skills/project-scout/SKILL.md
SkillsForUnity/unity-skills~/skills/project/SKILL.md
SkillsForUnity/unity-skills~/skills/sample/SKILL.md
SkillsForUnity/unity-skills~/skills/scene-contracts/SKILL.md
SkillsForUnity/unity-skills~/skills/script-roles/SKILL.md
SkillsForUnity/unity-skills~/skills/script/SKILL.md
SkillsForUnity/unity-skills~/skills/scriptdesign/SKILL.md
SkillsForUnity/unity-skills~/skills/shader/SKILL.md

Metadata

Files
0
Version
25d511e
Hash
1132d3e1
Indexed
2026-07-05 14:41

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-16 22:31
浙ICP备14020137号-1 $mapa de visitantes$