字
字节笔记本
2026年6月3日
MacArkPet 自定义桌宠形象:三种方案从替换到魔改
API中转
¥120
MacArkPet 支持自定义桌宠形象,但它的渲染方式是通过 WKWebView 运行 Spine/WebGL 模型,不是简单换张头像。以下是三种可行的自定义方案。
方案一:替换已有模型资源
最简单的方式,不需要改代码。
先同步模型:
bash
open ~/Library/Application\ Support/MacArkPet/ArkModels进入目录后找到角色文件夹,每个 Spine 模型包含三个文件:
text
xxx.json # 骨骼和动画数据
xxx.atlas # 纹理图集映射
xxx.png # 贴图替换方法:
- 复制一个已有角色文件夹,重命名
- 把里面的 json / atlas / png 换成你的 Spine 模型
- 保持文件命名和目录结构一致
- 重启 MacArkPet
方案二:自己制作 Spine 桌宠模型
这是真正的自定义形象,需要准备:
- 角色立绘拆分成独立图层(身体、头、手臂、腿等)
- 在 Spine Editor 中导入、搭建骨骼
- 制作动画,建议按 MacArkPet 支持的状态命名:
| 动画名称 | 说明 |
|---|---|
| idle | 待机 |
| walk | 行走 |
| sit | 坐下 |
| sleep | 睡觉 |
| touch | 互动 |
| special | 特殊动作 |
- 导出为 json / atlas / png 格式
- 放入 ArkModels 目录
如果动画名称不匹配,可能出现模型能加载但某些动作播放不了的情况。
方案三:魔改代码支持普通图片
如果不想折腾 Spine,只想放自己的小人、猫、机器人,可以修改 MacArkPet 的渲染层。
项目结构:
text
Sources/MacArkPet/ Swift 源代码
Resources/ Spine runtime 和资源简单改法:保留桌宠窗口、拖拽、置顶、穿透等 macOS 能力,把 WebGL Spine 渲染换成普通图片视图:
swift
// 替换 WKWebView 渲染为 NSImageView
let imageView = NSImageView(frame: petWindow.frame)
imageView.image = NSImage(named: "my_pet_idle")
petWindow.contentView?.addSubview(imageView)更完善的方案是把渲染层抽象成多渲染器架构:
swift
protocol PetRenderer {
func render(state: PetState)
}
class SpineRenderer: PetRenderer {
// WKWebView + Spine WebGL
}
class ImageRenderer: PetRenderer {
// NSImageView + PNG/GIF
}这样既能跑明日方舟风格的 Spine 模型,也能跑普通图片角色。
一键安装自定义素材包
如果你想快速测试,可以使用社区提供的自定义 PNG 桌宠素材包:
bash
# 下载解压后执行
bash scripts/install_to_macarkpet.sh重启 MacArkPet,搜索 Custom 或 MVP 即可看到自定义角色。
注意:原版 MacArkPet 默认只显示主图,不会自动切换 idle/move/sleep 等状态帧。需要额外修改 PetView 的渲染逻辑才能实现多帧动画切换。
分享: