Get asset data from the asset file in the Unity project — every serializable field and property. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Use 'assets-find' to find the asset first.
يبقى الأمر في سطر واحد. مرّر أفقيًا لمراجعته كاملًا قبل النسخ.
تفضّل نسخة محلية؟ نزّل الملفات المتاحة حاليًا لدى SkillsMP.
عرض SKILL.md
SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
assets-get-data
description
Get asset data from the asset file in the Unity project — every serializable field and property. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Use 'assets-find' to find the asset first.
Assets / Get Data
Get asset data from the asset file in the Unity project. It includes all serializable fields and properties of the asset. Use 'assets-find' tool to find asset before using this tool.
Path-scoped reads (token-saving)
Supply paths (a list of paths) to read only the listed fields/elements via Reflector.TryReadAt, or viewQuery (a ViewQuery) to navigate to a subtree and/or filter by name regex / max depth / type via Reflector.View. These two parameters are mutually exclusive — supply at most one. When neither is supplied the full asset is serialized (backwards compatible).
Path syntax
fieldName, nested/field, arrayField/[i], dictField/[key]. Leading #/ is stripped.
If unity-mcp-cli is not found, either install it globally (npm install -g unity-mcp-cli) or use npx unity-mcp-cli instead.
Read the /unity-initial-setup skill for detailed installation instructions.
Input
Name
Type
Required
Description
assetRef
any
Yes
Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders.
paths
any
No
Optional. List of paths to read individually via Reflector.TryReadAt. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'.
viewQuery
any
No
Optional. View-query filter routed through Reflector.View — combines a starting Path, a case-insensitive NamePattern regex, MaxDepth, and an optional TypeFilter. Mutually exclusive with 'paths'.
"instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
}
,
"assetType"
:
{
"$ref"
:
"#/$defs/System.Type"
,
"description"
:
"Type of the asset."
}
,
"assetPath"
:
{
"type"
:
"string"
,
"description"
:
"Path to the asset within the project. Starts with 'Assets/'"
}
,
"assetGuid"
:
{
"type"
:
"string"
,
"description"
:
"Unique identifier for the asset."
}
}
,
"required"
:
[
"instanceID"
]
,
"description"
:
"Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
,
"System.Collections.Generic.List(System.String)"
:
{
"type"
:
"array"
,
"items"
:
{
"type"
:
"string"
}
}
,
"com.IvanMurzak.ReflectorNet.Model.ViewQuery"
:
{
"type"
:
"object"
,
"properties"
:
{
"Path"
:
{
"type"
:
"string"
,
"description"
:
"Navigate to this path first, then serialize only that subtree. Path segments are separated by '/'. Use '[i]' for array/list index (e.g. 'users/[2]/name') and '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Examples: 'admin/name', 'users/[0]/email', 'config/[timeout]'. Leave null to start from the root object."
}
,
"NamePattern"
:
{
"type"
:
"string"
,
"description"
:
"Case-insensitive .NET regex pattern matched against field and property names. Only branches containing at least one match are kept in the result tree. Examples: 'orbitRadius' (exact name), 'orbit.*' (prefix match), 'radius|speed' (either name). When nothing matches, the root envelope is returned with empty fields/props. Leave null to return all fields and properties without filtering."
}
,
"MaxDepth"
:
{
"type"
:
"integer"
,
"description"
:
"Maximum nesting depth of the returned serialized tree. 0 = root type name and value only — no nested fields or properties. 1 = one level of fields/props visible, their children stripped. 2 = two levels visible, and so on. Leave null (default) for unlimited depth."
}
,
"TypeFilter"
:
{
"$ref"
:
"#/$defs/System.Type"
,
"description"
:
"When set, prunes the result tree to members whose runtime type is assignable to this type. Non-matching branches are removed; the root envelope is always preserved. Examples: typeof(float) keeps only float fields, typeof(IEnumerable) keeps only collections. Leave null to include members of any type."
}
}
}
}
,
"required"
:
[
"assetRef"
]
}
:
"Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}
,
"name"
:
{
"type"
:
"string"
,
"description"
:
"Object name."
}
,
"value"
:
{
"description"
:
"Value of the object, serialized as a non stringified JSON element. Can be null if the value is not set. Can be default value if the value is an empty object or array json."