Files
blog/public/pio/README.md
2026-01-07 16:24:34 +00:00

4.3 KiB
Raw Permalink Blame History

Spine 看板娘功能使用指南

功能说明

此功能为博客添加了一个可配置的 Spine 动画看板娘,可以显示在页面的角落位置。

配置选项

src/config.ts 文件中的 spineModelConfig 对象包含以下配置选项:

export const spineModelConfig: SpineModelConfig = {
  enable: false, // 是否启用看板娘(默认关闭)
  model: {
    path: "/pio/models/shizuku/shizuku.model.json", // 模型文件路径
    scale: 1.0, // 模型缩放比例
    x: 0, // X轴偏移
    y: 0, // Y轴偏移
  },
  position: {
    corner: "bottom-right", // 显示位置: "bottom-left" | "bottom-right" | "top-left" | "top-right"
    offsetX: 20, // 距离边缘的X轴偏移像素
    offsetY: 20, // 距离边缘的Y轴偏移像素
  },
  size: {
    width: 280, // 容器宽度(像素)
    height: 400, // 容器高度(像素)
  },
  interactive: {
    enabled: true, // 是否启用交互功能
    clickAnimation: "tap_body", // 点击时播放的动画名称
    idleAnimations: ["idle"], // 待机动画列表
    idleInterval: 10000, // 待机动画切换间隔(毫秒)
  },
  responsive: {
    hideOnMobile: true, // 是否在移动端隐藏
    mobileBreakpoint: 768, // 移动端断点(像素)
  },
  zIndex: 1000, // CSS 层级
  opacity: 1.0, // 透明度0.0-1.0
};

文件结构要求

要使用此功能,您需要准备以下文件:

1. Spine 运行时库

将 Spine 运行时 JavaScript 文件放置在:

  • public/pio/static/spine-player.js

您可以从以下来源获取:

2. Spine 模型文件

将您的 Spine 模型文件放置在:

  • public/pio/models/[模型名称]/

每个模型需要包含以下文件:

  • [模型名称].json - Spine 骨骼数据文件
  • [模型名称].atlas - 纹理图集文件
  • [模型名称].png - 纹理图像文件

例如,对于默认的 shizuku 模型:

  • public/pio/models/shizuku/shizuku.json
  • public/pio/models/shizuku/shizuku.atlas
  • public/pio/models/shizuku/shizuku.png

启用步骤

  1. 准备 Spine 文件:将必要的文件按照上述结构放置在 public/pio/ 目录中

  2. 修改配置:在 src/config.ts 中将 spineModelConfig.enable 设置为 true

  3. 自定义设置:根据您的需求调整其他配置选项

  4. 测试功能:重新构建并启动项目,查看看板娘是否正常显示

动画配置

点击动画

设置 clickAnimation 为您模型中存在的动画名称,用户点击看板娘时会播放此动画。

待机动画

idleAnimations 数组中添加多个动画名称,系统会按照设定的间隔随机播放这些动画。

常见动画名称参考

  • idle - 待机动画
  • tap_body - 点击身体
  • tap_head - 点击头部
  • shake - 摇摆动画
  • flick_head - 轻拍头部

(具体动画名称取决于您的 Spine 模型文件)

响应式设计

  • 默认在移动端隐藏看板娘以提高性能
  • 可以通过 hideOnMobilemobileBreakpoint 配置响应式行为
  • 支持窗口大小变化时的动态显示/隐藏

故障排除

看板娘不显示

  1. 检查 enable 是否设置为 true
  2. 确认模型文件路径是否正确
  3. 检查浏览器控制台是否有错误信息
  4. 验证 Spine 运行时文件是否正确加载

动画不播放

  1. 检查动画名称是否与模型文件中的动画匹配
  2. 确认模型文件是否包含所需的动画数据
  3. 查看浏览器控制台的错误信息

位置或大小问题

  1. 调整 position.offsetXposition.offsetY 来微调位置
  2. 修改 size.widthsize.height 来调整容器大小
  3. 使用 model.scale 来缩放模型本身

注意事项

  • Spine 模型文件可能较大,建议优化文件大小以提高加载速度
  • 在移动端默认隐藏以节省带宽和提高性能
  • 确保您有使用 Spine 模型的适当许可证
  • 某些浏览器可能需要用户交互后才能播放动画

获取 Spine 模型

您可以从以下渠道获取或制作 Spine 模型:

请确保您有合法使用权限的模型文件。