Appearance
场景资源预设 JSON 格式
用于导入导出场景资源(Live2D / Spine / 图片差分)的状态预设和动作预设。
顶层结构
json
{
"version": 1,
"kind": "cubism",
"presentation": {
"states": [],
"actions": []
}
}| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
version | number | 是 | 固定为 1 |
kind | string | 是 | 资源类型:cubism / spine / image_variant。用于导入时校验。 |
presentation | object | 是 | 预设容器 |
presentation.states(状态预设)
每个状态预设的字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 状态名称,同一资源内不可重复 |
animation | string | 否 | 绑定的动画名称(仅 Cubism / Spine) |
expression | string | 否 | 绑定的表情名称(仅 Cubism) |
skin | string | 否 | 绑定的皮肤名称(仅 Spine) |
presentation.actions(动作预设)
每个动作预设的字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 动作名称,同一资源内不可重复 |
playName | string | 否 | 要播放的动画名称(仅 Cubism / Spine) |
关于 kind
cubism:Live2D Cubism 模型,支持animation/expression绑定。spine:Spine 骨骼动画,支持animation/skin绑定。image_variant:图片差分,不支持presentation块(图片差分使用variants字段,不在本格式中处理)。
当 kind 为 image_variant 时,presentation 应为空对象或 states / actions 均为空数组。
最小示例
json
{
"version": 1,
"kind": "cubism",
"presentation": {
"states": [
{
"name": "默认",
"animation": "idle",
"expression": "neutral"
}
],
"actions": []
}
}完整示例
json
{
"version": 1,
"kind": "cubism",
"presentation": {
"states": [
{
"name": "默认",
"animation": "idle",
"expression": "neutral"
},
{
"name": "微笑",
"animation": "idle",
"expression": "smile"
},
{
"name": "害羞",
"animation": "blush",
"expression": "shy"
},
{
"name": "生气",
"expression": "angry"
}
],
"actions": [
{
"name": "打招呼",
"playName": "greeting"
},
{
"name": "点头",
"playName": "nod"
}
]
}
}AI 生成约束
kind必须与当前编辑的资源类型完全匹配,否则导入失败。states中的name不能重复;actions中的name不能重复。animation/expression/skin/playName的值必须是该资源实际可用的动画/表情/皮肤名称,否则保存时会提示"无效动画"等错误。- 对于
cubism类型的资源,animation和playName的取值来自资源的motionGroups。 - 对于
spine类型的资源,animation和playName的取值来自资源的animations。
常见错误
kind写成了资源的存储值(如"image")而不是"image_variant"→ 校验失败- 在
image_variant类型下填写了states→ 会被忽略 - 状态名称重复 → 保存时提示重复
- 绑定的动画名称在资源中不存在 → 保存时提示"选择了无效动画"