Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/Besty0728/Unity-Skills --skill unity-scriptableobject명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Automate the Unity Editor through a local REST API — create and edit scripts, build scenes and prefabs, manage assets/materials/lighting, run tests, and drive hundreds of Editor operations across modules. Use when the user wants to actually operate the Unity Editor from chat — create or modify GameObjects/scripts/scenes/assets, batch-edit, or run Editor automation — in any language. Not needed for conceptual Unity Q&A that touches no Editor state — read the matching advisory doc under skills/ instead. 当用户要从对话里实际操作 Unity 编辑器(创建/修改/批量编辑/运行测试)时使用,任何语言均可触发;纯概念问答无需本协议。
Unified batch and async-job orchestration
Index of all Unity Skills modules with per-module mode labels (SA/FA/Mixed). Use to find which module covers a task before loading its doc.
SKILL.md 표시 중
| name | unity-scriptableobject |
| description | Manage ScriptableObject assets |
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.
Create and manage ScriptableObject assets.
scriptableobject_get / scriptableobject_get_serialized_properties / scriptableobject_list_types / scriptableobject_find / scriptableobject_export_json 标 SkillMode.SemiAuto,可直接执行(注意 scriptableobject_export_json 传 savePath 会落盘,因此标 MutatesAssets = true 而非 ReadOnly);写类 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 单次执行返结果。scriptableobject_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 assetRouting:
script module with template "ScriptableObject"scriptableobject_import_json / scriptableobject_export_json (this module)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).scriptableobject_createCreate a new ScriptableObject asset. Parameters:
typeName (string): ScriptableObject type name.savePath (string): Asset save path.scriptableobject_getGet properties of a ScriptableObject. Parameters:
assetPath (string): Asset path.scriptableobject_setSet 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_typesList available ScriptableObject types in the project. Parameters:
filter (string, optional): Filter by name.scriptableobject_duplicateDuplicate a ScriptableObject asset. Parameters:
assetPath (string): Source asset path to duplicate.scriptableobject_set_batchSet 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_propertiesList 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_propertySet 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:
speedstats.maxHpitems.Array.data[2]items.Array.size with value: "5" (resize first, then set elements)Value formats:
"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)valueAssetPath: "Assets/Icons/sword.png" (optionally valueObjectType); clear with value: "null"{"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"}{"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_batchSet 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_deleteDelete a ScriptableObject asset.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| assetPath | string | Yes | - | Asset path of the ScriptableObject to delete |
Returns: { success, deleted }
scriptableobject_findFind 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_jsonExport 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 write the JSON to; omit it to get the JSON inline instead |
Returns: { success, path } when savePath was given (the JSON is not echoed), { success, json } otherwise.
savePathmakes this a write. With it the skill does aFile.WriteAllText, so it is flaggedMutatesAssets = trueand notReadOnly, even though it staysSkillMode.SemiAuto(no grant needed in any mode). Reading a ScriptableObject's values costs nothing on disk as long as you leavesavePathout — and note the two return shapes are mutually exclusive, so passingsavePathwhen you wanted to read the data means a second call.
scriptableobject_import_jsonImport JSON data into a ScriptableObject. Two accepted formats:
{"hp": 100, "title": "Boss"} — auto-wrapped into {"MonoBehaviour": {...}} before applying{"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 names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.