fix: Windows spawn, prefab path, preview API, asset deps, error messages; add execute-context resource, tool descriptions, scene/script/asset tools
Bug fixes (verified against Cocos Creator 3.8.8): - diagnostics: shell:true for .cmd/.bat on Windows (T125/T126) - prefabs: duplicatePrefab target resolves under assets/ (T420) - cocos-project: add preview.open candidate for 3.8.8 (T444) - assets-advanced: detect directory assets in inspectAssetDependencies (T110) - scene: improve component-not-found errors with compilation hint (T429) Documentation improvements: - tool-registry: add enum and injected vars to execute_javascript, path format examples, asset ref limitation note - resources: add cocos://mcp/execute-context resource with variables, patterns, pitfalls New tools (core 37->38, full 101->110): - scene-management: create_scene, query_scene_state (core), copy_paste_node, rename_node, reparent_node - scripts: create_script with component/plain templates - prefabs: create_prefab - assets-advanced: batch_asset_ops, find_unused_assets
This commit is contained in:
+56
-38
@@ -31,6 +31,7 @@ const {
|
||||
} = require('./project-instructions');
|
||||
const {
|
||||
applyPrefabInstance,
|
||||
createPrefab,
|
||||
duplicatePrefab,
|
||||
editPrefabJson,
|
||||
inspectPrefab,
|
||||
@@ -41,6 +42,8 @@ const { createAssetsAdvancedTools } = require('./tools/assets-advanced');
|
||||
const { createCocosProjectTools } = require('./tools/cocos-project');
|
||||
const { buildSnippet, createFileTools, refreshAssets } = require('./tools/files');
|
||||
const { createSceneEventTools } = require('./tools/scene-events');
|
||||
const { createSceneManagementTools } = require('./tools/scene-management');
|
||||
const { createScriptTools } = require('./tools/scripts');
|
||||
const { captureDesktopScreenshot, captureEditorWindowScreenshot, capturePanelScreenshot } = require('./screenshots');
|
||||
const { checkForUpdate } = require('./update-checker');
|
||||
const { assertJavascriptSafety } = require('./javascript-safety');
|
||||
@@ -358,8 +361,8 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[primary] Execute JavaScript in either the scene or editor context. Use context=\"scene\" for live scene/runtime inspection and mutation, or context=\"editor\" for Editor APIs, asset-db workflows, MCP orchestration, local filesystem access, and higher-level automation. Prefer this as the main flexible tool when many narrow tools would be noisy.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
context: { type: 'string', description: 'Execution context: scene or editor.' },
|
||||
code: { type: 'string', description: 'JavaScript code to execute. May directly return a value, define run(env), or export a function.' },
|
||||
context: { type: 'string', enum: ['scene', 'editor'], description: 'Execution context. Scene injects: cc, scene, director, require, Editor, args. Editor injects: require, Editor, args, context, helpers, fs, path, os. Read cocos://mcp/execute-context resource for details.' },
|
||||
code: { type: 'string', description: 'JavaScript code. May directly return a value, define run(env), or use module.exports. In scene context, use cc.Sprite, cc.Node (not bare Sprite/Node). Load assets via cc.assetManager.loadAny({uuid, type}, cb) callback style.' },
|
||||
args: { type: 'object', description: 'Optional JSON object passed into the script.' },
|
||||
safety_checks: { type: 'boolean', description: 'Override the project default JavaScript safety checks for this call.' },
|
||||
},
|
||||
@@ -387,7 +390,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[compat] Execute JavaScript in the active Cocos scene context. Prefer execute_javascript with context="scene" as the main unified tool; use this when you specifically want the scene-only compatibility entrypoint.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
code: { type: 'string', description: 'JavaScript code to execute inside the scene script context.' },
|
||||
code: { type: 'string', description: 'JavaScript code. Injected vars: cc, scene, director, require, Editor, args. Use cc.Sprite etc. (not bare Sprite). See cocos://mcp/execute-context resource.' },
|
||||
args: { type: 'object', description: 'Optional JSON object passed to the scene script.' },
|
||||
safety_checks: { type: 'boolean', description: 'Override the project default JavaScript safety checks for this call.' },
|
||||
},
|
||||
@@ -404,7 +407,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[compat] Execute JavaScript in the editor/browser context. Prefer execute_javascript with context="editor" as the main unified tool; use this when you specifically want the editor-only compatibility entrypoint.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
code: { type: 'string', description: 'JavaScript code to execute inside the editor context.' },
|
||||
code: { type: 'string', description: 'JavaScript code. Injected vars: require, Editor, args, context, helpers, fs, path, os. See cocos://mcp/execute-context resource.' },
|
||||
args: { type: 'object', description: 'Optional JSON object passed to the editor script.' },
|
||||
safety_checks: { type: 'boolean', description: 'Override the project default JavaScript safety checks for this call.' },
|
||||
},
|
||||
@@ -665,7 +668,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
name: { type: 'string', description: 'Name of the node to create.' },
|
||||
parentPath: { type: 'string', description: 'Optional parent node path.' },
|
||||
parentPath: { type: 'string', description: 'Parent node hierarchy path, e.g. "Canvas/Player". Slash-separated from scene root. Use get_hierarchy to find the full path.' },
|
||||
position: { type: 'object', description: 'Optional position {x,y,z}.' },
|
||||
scale: { type: 'object', description: 'Optional scale {x,y,z}.' },
|
||||
eulerAngles: { type: 'object', description: 'Optional rotation {x,y,z} in degrees.' },
|
||||
@@ -681,7 +684,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: 'Delete a node by path, uuid, or name.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Hierarchy path.' },
|
||||
path: { type: 'string', description: 'Hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
},
|
||||
@@ -695,7 +698,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: 'Update node position, rotation, scale, or active state.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Hierarchy path.' },
|
||||
path: { type: 'string', description: 'Hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
position: { type: 'object', description: 'Position {x,y,z}.' },
|
||||
@@ -715,6 +718,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
handler: async () => getRuntimeContext(),
|
||||
},
|
||||
...createCocosProjectTools({ createSchema }),
|
||||
...createSceneManagementTools({ createSchema, sceneBridge }),
|
||||
{
|
||||
name: 'list_scenes',
|
||||
profile: 'core',
|
||||
@@ -757,6 +761,19 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
return { count: assets.length, prefabs: assets.slice(0, 200) };
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'create_prefab',
|
||||
profile: 'full',
|
||||
description: '[core] Create a prefab asset from a scene node.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
nodeUuid: { type: 'string', description: 'UUID of the scene node to save as prefab.' },
|
||||
savePath: { type: 'string', description: 'Asset-db URL, e.g. db://assets/prefabs/Enemy.prefab.' },
|
||||
},
|
||||
['nodeUuid', 'savePath']
|
||||
),
|
||||
handler: async (args) => createPrefab(args),
|
||||
},
|
||||
{
|
||||
name: 'inspect_prefab',
|
||||
profile: 'core',
|
||||
@@ -836,7 +853,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
prefabUuid: { type: 'string', description: 'Prefab asset uuid, db url, or path.' },
|
||||
parentPath: { type: 'string', description: 'Optional parent node path.' },
|
||||
parentPath: { type: 'string', description: 'Parent node hierarchy path, e.g. "Canvas/Player". Slash-separated from scene root.' },
|
||||
name: { type: 'string', description: 'Optional override node name.' },
|
||||
position: { type: 'object', description: 'Optional position {x,y,z}; fallback runtime path only.' },
|
||||
},
|
||||
@@ -881,7 +898,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[specialist] Inspect whether a scene node is linked to a prefab instance and return prefab metadata when available.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
},
|
||||
@@ -895,7 +912,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[core] Apply a scene prefab instance back to its associated prefab asset using the Cocos editor scene apply-prefab message.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
},
|
||||
@@ -909,7 +926,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[core] Revert a scene prefab instance from its associated prefab asset using available Cocos editor prefab revert messages.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
},
|
||||
@@ -924,7 +941,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
prefabUuid: { type: 'string', description: 'Prefab asset uuid.' },
|
||||
parentPath: { type: 'string', description: 'Optional parent node path.' },
|
||||
parentPath: { type: 'string', description: 'Parent node hierarchy path, e.g. "Canvas/Player". Slash-separated from scene root.' },
|
||||
name: { type: 'string', description: 'Optional override node name.' },
|
||||
position: { type: 'object', description: 'Optional position {x,y,z}.' },
|
||||
},
|
||||
@@ -1034,7 +1051,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[core] List components attached to a scene node.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
},
|
||||
@@ -1048,10 +1065,10 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[core] Inspect a component attached to a node.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
componentName: { type: 'string', description: 'Component class name.' },
|
||||
componentName: { type: 'string', description: 'Component class name, e.g. Sprite, Label, Button. Custom scripts must be compiled.' },
|
||||
index: { type: 'number', description: 'Optional component index.' },
|
||||
},
|
||||
[]
|
||||
@@ -1064,10 +1081,10 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: 'Add a component to a node by component class name.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
componentName: { type: 'string', description: 'Component class name, for example Sprite or cc.UITransform.' },
|
||||
componentName: { type: 'string', description: 'Component class name, e.g. Sprite, Label, Button, UITransform. Custom script components require the script to be compiled first.' },
|
||||
},
|
||||
['componentName']
|
||||
),
|
||||
@@ -1079,10 +1096,10 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: 'Remove a component from a node by name or index.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
componentName: { type: 'string', description: 'Component class name.' },
|
||||
componentName: { type: 'string', description: 'Component class name, e.g. Sprite, Label, Button. Custom scripts must be compiled.' },
|
||||
index: { type: 'number', description: 'Optional component index.' },
|
||||
},
|
||||
[]
|
||||
@@ -1095,13 +1112,13 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: 'Set a component property by dot path using a JSON value.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
componentName: { type: 'string', description: 'Component class name.' },
|
||||
componentName: { type: 'string', description: 'Component class name, e.g. Sprite, Label, Button. Custom scripts must be compiled.' },
|
||||
index: { type: 'number', description: 'Optional component index.' },
|
||||
propertyPath: { type: 'string', description: 'Property path such as color.r or enabled.' },
|
||||
valueJson: { type: 'string', description: 'JSON encoded value to assign, for example true, 12, \"hero\", or {\"x\":1}.' },
|
||||
propertyPath: { type: 'string', description: 'Property path using dot notation, e.g. "color.r", "enabled", "size.width".' },
|
||||
valueJson: { type: 'string', description: 'JSON encoded value, e.g. true, 12, "hero", {"x":1}. NOTE: Cannot set asset references (SpriteFrame, Texture, Material, etc.) — use execute_javascript with cc.assetManager.loadAny({uuid, type}, cb) for those.' },
|
||||
},
|
||||
['propertyPath', 'valueJson']
|
||||
),
|
||||
@@ -1121,12 +1138,12 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: 'Reset or clear a component property by dot path.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
componentName: { type: 'string', description: 'Component class name.' },
|
||||
componentName: { type: 'string', description: 'Component class name, e.g. Sprite, Label, Button. Custom scripts must be compiled.' },
|
||||
index: { type: 'number', description: 'Optional component index.' },
|
||||
propertyPath: { type: 'string', description: 'Property path such as color.r or enabled.' },
|
||||
propertyPath: { type: 'string', description: 'Property path using dot notation, e.g. "color.r", "enabled", "size.width".' },
|
||||
},
|
||||
['propertyPath']
|
||||
),
|
||||
@@ -1139,7 +1156,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
name: { type: 'string', description: 'Canvas node name.' },
|
||||
parentPath: { type: 'string', description: 'Optional parent node path.' },
|
||||
parentPath: { type: 'string', description: 'Parent node hierarchy path, e.g. "Canvas/Player". Slash-separated from scene root.' },
|
||||
width: { type: 'number', description: 'Canvas width.' },
|
||||
height: { type: 'number', description: 'Canvas height.' },
|
||||
position: { type: 'object', description: 'Optional position {x,y,z}.' },
|
||||
@@ -1155,7 +1172,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
name: { type: 'string', description: 'Label node name.' },
|
||||
parentPath: { type: 'string', description: 'Optional parent node path.' },
|
||||
parentPath: { type: 'string', description: 'Parent node hierarchy path, e.g. "Canvas/Player". Slash-separated from scene root.' },
|
||||
text: { type: 'string', description: 'Label text.' },
|
||||
fontSize: { type: 'number', description: 'Font size.' },
|
||||
width: { type: 'number', description: 'UI width.' },
|
||||
@@ -1174,7 +1191,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
name: { type: 'string', description: 'Button node name.' },
|
||||
parentPath: { type: 'string', description: 'Optional parent node path.' },
|
||||
parentPath: { type: 'string', description: 'Parent node hierarchy path, e.g. "Canvas/Player". Slash-separated from scene root.' },
|
||||
text: { type: 'string', description: 'Button text.' },
|
||||
width: { type: 'number', description: 'Button width.' },
|
||||
height: { type: 'number', description: 'Button height.' },
|
||||
@@ -1194,8 +1211,8 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
name: { type: 'string', description: 'Sprite node name.' },
|
||||
parentPath: { type: 'string', description: 'Optional parent node path.' },
|
||||
spriteFrameUuid: { type: 'string', description: 'Optional SpriteFrame asset uuid.' },
|
||||
parentPath: { type: 'string', description: 'Parent node hierarchy path, e.g. "Canvas/Player". Slash-separated from scene root.' },
|
||||
spriteFrameUuid: { type: 'string', description: 'SpriteFrame asset uuid, e.g. "57520716-48c8-4a19-8acf-41c9f8777fb0@f9941". Use list_assets to find available SpriteFrames.' },
|
||||
width: { type: 'number', description: 'UI width.' },
|
||||
height: { type: 'number', description: 'UI height.' },
|
||||
color: { type: 'string', description: 'Sprite color as #RRGGBB or #RRGGBBAA.' },
|
||||
@@ -1219,7 +1236,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
name: { type: 'string', description: 'Camera node name.' },
|
||||
parentPath: { type: 'string', description: 'Optional parent node path.' },
|
||||
parentPath: { type: 'string', description: 'Parent node hierarchy path, e.g. "Canvas/Player". Slash-separated from scene root.' },
|
||||
priority: { type: 'number', description: 'Camera priority.' },
|
||||
visibility: { type: 'number', description: 'Camera visibility mask.' },
|
||||
clearFlags: { type: 'number', description: 'Camera clear flags.' },
|
||||
@@ -1272,7 +1289,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: 'Add an AnimationClip asset to a node Animation component.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
clipUuid: { type: 'string', description: 'AnimationClip asset uuid.' },
|
||||
@@ -1288,7 +1305,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[core] Play an Animation component clip on a node.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
clipName: { type: 'string', description: 'Optional clip name.' },
|
||||
@@ -1303,7 +1320,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[core] Stop an Animation component clip on a node.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
clipName: { type: 'string', description: 'Optional clip name.' },
|
||||
@@ -1499,7 +1516,7 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
description: '[core] Emit a custom event on a target scene node with an optional JSON payload.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
eventName: { type: 'string', description: 'Event name to emit.' },
|
||||
@@ -1524,16 +1541,17 @@ function createToolRegistry({ getRuntimeContext, getStatus, interactionLog, runt
|
||||
handler: async (args) => sceneBridge.call('simulateButtonClick', args),
|
||||
},
|
||||
...createSceneEventTools({ createSchema, sceneBridge }),
|
||||
...createScriptTools({ createSchema, getRuntimeContext }),
|
||||
{
|
||||
name: 'invoke_component_method',
|
||||
profile: 'full',
|
||||
description: '[core] Invoke a method on a component for runtime validation and test hooks.',
|
||||
inputSchema: createSchema(
|
||||
{
|
||||
path: { type: 'string', description: 'Node hierarchy path.' },
|
||||
path: { type: 'string', description: 'Node hierarchy path, e.g. "Canvas/Player".' },
|
||||
uuid: { type: 'string', description: 'Node uuid.' },
|
||||
name: { type: 'string', description: 'Fallback exact node name.' },
|
||||
componentName: { type: 'string', description: 'Component class name.' },
|
||||
componentName: { type: 'string', description: 'Component class name, e.g. Sprite, Label, Button. Custom scripts must be compiled.' },
|
||||
index: { type: 'number', description: 'Optional component index.' },
|
||||
methodName: { type: 'string', description: 'Method name to invoke.' },
|
||||
args: { type: 'array', description: 'Optional argument array.' },
|
||||
|
||||
Reference in New Issue
Block a user