制作全身人物
创建人物模板,上传或选择皮肤,预览人物,并在布局中复用与局部覆盖
先制作可复用的人物模板,再把它作为普通布局元素使用。人物显示全身皮肤;只需要脸部时使用头像。
按项目导入打开 Xerr 插件目录 ZIP。自带 player_card 模板和 avatar_example 布局可供对照;本教程新建独立模板 studio_avatar,不修改默认人物。
新建人物模板
在「模板 → 人物」新建模板,填写 ID studio_avatar。模板位于 core/template/avatar;布局引用模板 ID,文件夹只用于整理。
皮肤来源选择玩家皮肤(player),目标选观看者(viewer),先保留以下设置:
| 设置 | 值 |
|---|---|
| 高度 | 96 |
| 模型 | auto |
水平视角 yaw | -20 |
俯仰视角 pitch | 5 |
| 动作 | 待机(idle) |
高度可在 16~256 之间调整,宽度自动计算。classic 为常规手臂,slim 为细手臂;auto 使用玩家皮肤模型信息,没有信息时按 classic 处理。
选择玩家或上传本地皮肤
玩家皮肤可设置四种目标:
- 观看者(
viewer):在游戏中,每位观看者显示自己的皮肤。 - 指定玩家(
player):填写玩家名或 UUID,二选一。 - 布局变量(
variable):填写变量键,调用方提供玩家名或 UUID。 - Kether(
kether):脚本返回玩家、UUID、玩家名或null,目标求值间隔默认为20tick。
玩家预览使用 Steve 样例,本地皮肤使用上传图片。
制作固定角色时,将皮肤来源切换为本地文件(file),上传标准 64×64 PNG 皮肤,或选择项目内已有文件。上传 guide.png 后保存在 core/assets/skin/guide.png,配置只写相对路径:
skin:
type: file
file: guide.png
model: slim每张图片不超过 1 MiB。路径使用小写字母、数字、下划线、连字符和 /,以 .png 结尾;不填写绝对路径、外部链接或普通图片组 ID。旧版 64×32 皮肤需先转换为 64×64。
编辑器会实际绘制上传的全身皮肤。用预览检查皮肤外层与手臂宽度;细手臂本地皮肤选择 slim,本地文件使用 auto 时按 classic 处理。
预览视角与动作
调整 yaw(-180~180)和 pitch(-30~30),观察人物朝向;调整高度检查尺寸,不要用布局坐标代替视角设置。
编辑器可预览静止(still)、待机(idle)、行走(walk)、跑步(run)和挥手(wave)等预设动作。
在游戏中,follow 跟随在线目标的待机、行走、跑步、潜行、跳跃和头部朝向。默认跟随皮肤目标,也可以单独选择动作目标;本地角色跟随观看者时设置 motion.target.type: viewer。
在布局中引用人物
打开需要人物的普通布局,从「添加 → 人物」创建元素,选择模板 studio_avatar。
- 先设置屏幕锚点,例如
x: 15、y: 40。 - 用元素
x、y调整锚点附近的局部位置。 - 与文字或图片重叠时调整层级。位置留在布局中,不写入人物模板。
默认继承模板的目标和动作。只改变当前人物时,开启局部目标或动作覆盖,例如:
avatar:
template: studio_avatar
target:
type: player
name: Alex
motion:
type: wave两项覆盖各自生效,只影响当前引用;关闭覆盖后恢复模板默认值。修改模板的皮肤、尺寸、模型或视角会影响所有引用,需要不同外观时另建模板。
动作覆盖是整体替换。覆盖为 follow 却省略动作目标时,将跟随当前皮肤目标,不继承模板中的单独动作目标。本地皮肤的目标覆盖不会更换 PNG。
一个布局最多四个人物。字段和完整示例见人物布局引用。
常见问题
- 本地皮肤无法使用:检查 PNG 格式、
64×64尺寸、文件大小和相对路径,并确认文件随 ZIP 导出。 - 只有当前人物需要挥手:覆盖布局元素的动作,不要修改共享模板。
- 游戏中显示 Steve:玩家皮肤可能仍在加载或目标不可用;检查名字、UUID、变量与皮肤来源。
- 游戏中跟随一直待机:检查目标是否在线、能否解析,以及显示容器是否刷新内容。
全部字段与限制见人物模板参考。