Skip to content

Skinning

HoshinoYumeka edited this page Sep 7, 2026 · 2 revisions

换肤(资源包)

首页使用手册 | 下一页:服主须知

界面上的每个视觉元素都可以用贴图替换。放了贴图就用贴图,没放就用内置配色,功能完全不受影响——不会出现缺图变紫黑格的情况。

把 PNG 放进资源包的 assets/mcphone/textures/,路径按下面几张表(相对该目录)。改完按 F3+T 重载资源包即可看到效果,无须重启游戏。

下表共 44 个贴图位,与代码中的 PhoneSkin.Element 枚举一一对应。

phone/ —— 机身、导航、主屏

文件名 画的是什么 建议尺寸 没放时
phone/frame.png 手机外壳边框 136×216(含边框的整机)。中间 120×200 必须透明——外壳画在最上层,不透明会糊掉整个屏幕;反之,绘制在中间区域的内圆角、刘海会正常显示 画纯色边框
phone/status_bar.png 顶部状态栏底 120×10 纯色
phone/nav_bar.png 底部导航栏底 120×14 纯色
phone/nav_back.png 导航栏返回键 40×14 画 ◁ 字符
phone/nav_home.png 导航栏主页键 40×14 画 ○ 字符
phone/nav_tasks.png 导航栏多任务键 40×14 画 □ 字符
phone/drop_slot.png 主屏拖动排序时「松手落这儿」的空槽 20×20 半透明纯色
phone/page_dot.png 主屏底部的页码点(不是当前页) 3×3 半透明纯色
phone/page_dot_active.png 页码点(当前页) 3×3 纯白
phone/page_edge.png 拖着图标停在屏幕边上时的翻页提示条 10×176(竖条) 半透明纯色
phone/toast.png 收到消息时右上角的通知底 160×32(原版通知的槽位尺寸,照这个画才不会和其他模组的通知挤在一起错位) 纯色加一圈描边
phone/unread_badge.png 未读条数的角标底。两处共用:会话列表里的未读数与消息通知右上角的计数是同一张图,换一次两处都变 12×9 纯色

chat/ —— 美西螈

文件名 画的是什么 建议尺寸 没放时
chat/bubble_self.png 自己发出的聊天气泡底(只有文字消息用,图片不套气泡) 随内容拉伸 纯色
chat/bubble_peer.png 对方发来的聊天气泡底(同上) 随内容拉伸 纯色
chat/input_bar.png 会话界面输入栏底 90×14 纯色
chat/teleport.png 会话列表里在线好友那一行右下角的「传送到他身边」小图标 7×7(按实际绘制尺寸画,这里不做平滑缩放) 画 → 字符
chat/attach.png 会话界面输入栏左边那个「+」(点开是图片 / 表情) 9×9 画 + 字符

music/ —— 音乐

文件名 画的是什么 建议尺寸 没放时
music/prev.png 「上一首」 9×9 画 ⏮ 字符
music/play.png 「播放」 9×9 画 ▶ 字符
music/pause.png 「暂停」 9×9 画 ⏸ 字符
music/next.png 「下一首」 9×9 画 ⏭ 字符
music/eject.png 唱片仓的「取出」 9×9 画 ⏏ 字符
music/backpack.png 唱片仓的「从背包放」(只在仓是空的时候出现) 9×9 画 ▤ 字符
music/mode_list_loop.png 循环模式:列表循环 9×9 画 ↻ 字符
music/mode_single_loop.png 循环模式:单曲循环 9×9 画 ① 字符
music/mode_shuffle.png 循环模式:随机播放 9×9 画 ⇄ 字符

gallery/ · store/ —— 相册与商店

文件名 画的是什么 建议尺寸 没放时
gallery/delete.png 相册单张查看里的「删除」键(点过一次之后变成文字「再点一次确认」,那一态不走贴图) 9×9 画「删除」两个字
store/button.png 应用详情页上可点的按钮底(购买 / 下载) 100×16 纯色
store/button_disabled.png 点不动时的按钮底(已安装 / 买不起) 100×16 纯色
store/companion.png 商店里「联动App」入口格的图标 20×20 纯色底加三个小方块

store/button_disabled.png 是独立的一张,而非把可点的那张自动调暗:「不可点」该长什么样,由绘制贴图的人决定。

browser/ —— 浏览器

文件名 画的是什么 建议尺寸 没放时
browser/panel.png 浏览器那块大面板的底 320×200 纯色
browser/bar.png 浏览器工具条那一条的底 320×22 纯色
browser/back.png 「后退」键 22×18(整个键框,不是居中的小图标) 画 ◀ 字符
browser/forward.png 「前进」键 22×18 画 ▶ 字符
browser/reload.png 「刷新」键 22×18 画 ↻ 字符

browser/panel.png 绝大部分会被网页盖住,真正看得见的只有加载中的空白期,纯色就够。 browser/bar.png 那一条在面板外面,浮在面板上方的留白里,不占网页高度。

reader/ —— 阅读

文件名 画的是什么 建议尺寸 没放时
reader/book.png 书架列表里那本兜底的书(只在书源画不出那本书自己的图标时用得上) 16×16(按实际绘制尺寸画,这里不做平滑缩放) 纯色
reader/search_bar.png 阅读页顶上那条搜索栏的底 112×12 纯色
reader/shelved.png 书已收进书架时行右端那颗星 9×9(按实际绘制尺寸画) 画 ★ 字符
reader/unshelved.png 书还没收进书架时那颗星 9×9 画 ☆ 字符
reader/tab.png 底部「书架 / 书城」当前那一页的底 54×12 纯色(另一页不画底)

settings/ —— 滑条

文件名 画的是什么 建议尺寸 没放时
settings/slider_track.png 滑条的槽(「界面大小」那一条,将来的音量条也用它) 100×6,整张横向拉伸 纯色
settings/slider_fill.png 滑条已填充的那一段 100×6 纯色
settings/slider_knob.png 滑块 4×14(比槽高,压在槽上) 纯色
settings/step_button.png 滑条两端 − + 键的底 14×14 纯色,悬停时提亮

这四个位刻意使用通用名称:此后其他滑条(如音量)复用同一组贴图,只需绘制一次。

App 图标与天气图标

App 图标单独放在 app/ 下,文件名就是 App 的短名,都是 20×20:

app/settings.png   app/app_store.png  app/chat.png       app/camera.png
app/gallery.png    app/music.png      app/ender_chest.png app/notes.png
app/waystone.png   app/browser.png    app/clock.png      app/weather.png
app/reader.png     app/quests.png

附属模组的 App 图标路径由它自己决定,见附属接口文档

天气页那张大图标weather/ 下,六张 32×32:clear.pngrain.pngsnow.pngthunder.pngdry.pngnone.png,按当前是什么天各显其一。

这六张与上面几张表性质不同:它们没有兜底色,模组自带全套,资源包只做覆盖。建议六张一并替换,只换其中一两张会出现画风不统一。

玩家头像不在换肤范围内:那是玩家自己的皮肤,取自 Tab 玩家列表。

尺寸与拉伸

尺寸不必精确匹配,贴图会被拉伸到目标区域。要不变形,按建议尺寸或其等比放大绘制即可。

「建议尺寸」指的是画在屏幕上有多大,不是文件必须多大。 整数倍放大的图同样可用,且线条细、有弧度的图案这样更清楚。模组自带图的倍数:

贴图 倍数
phone/frame.png 2 倍(272×432)
导航栏三个键 10 倍(400×140)
书架两颗星、浏览器三个键、滑块与 − + 键 4 倍

放大倍数取整数——非整数倍在低 GUI 缩放下会掉线条。

九宫格:.png.mcmeta

默认整张拉伸。 不带元数据的贴图会被拉到实际大小,带圆角的图在宽气泡上抻长、在窄气泡上压扁,因此纯色或纵向渐变最稳妥。

要让圆角不变形,在 PNG 旁放一份同名的 .png.mcmeta

{"mcphone_skin": {"border": 3}}

该图即改走九宫格:四角按源图上那 3 个像素原样绘制,只有四条边和中间被拉伸,气泡无论多宽多高,四个角都一样大。

情形 行为
border 大于源图短边的一半 忽略,退回整张拉伸
老资源包未写该文件 行为不变,无须改动

自带图中使用九宫格的有五张:

贴图 border
chat/bubble_self chat/bubble_peer chat/input_bar 3
settings/slider_track settings/slider_fill 2(使两端圆头不随条一起抻长)

状态只能靠亮度或透明度

贴图改不了颜色。 悬停、点不动这类状态,在没有贴图的年代是换一个颜色画出来的;一旦这个位上有了贴图,那个颜色就再也看不见。

因此模组在有贴图时改用别的表达:

状态 表达
导航键、商店按钮悬停 整张按倍数提亮(资源包画的是什么颜色,亮起来还是那个颜色)
浏览器三个键点不动 整张压暗
音乐键、聊天的「+」 把高亮块画在贴图底下

绘制贴图时不必自行表达这些状态。

半透明有效:alpha 介于 0 与 255 之间的像素会正常混合,抗锯齿边缘、整块半透明的底("壁纸上压一层暗色"这类效果)都可以画。

1.7.40 之前这类像素会被当作不透明绘制,边缘发硬、半透明的底变成实心。那是模组的缺陷,不是贴图的问题。

其他

44 个贴图位模组现已全部自带,一个不缺。资源包放同路径的图仍照常覆盖;「没放时」那一列的兜底色平时轮不到出场,保留在表里是因为资源包塞进一张坏 PNG 时仍会退到那一档,而不是变成紫黑格。

情形 行为
文件不是合法 PNG 退回纯色并在日志记一条警告,不崩溃

生成完整清单(含每个位现有的图长什么样、缺图时退回哪个颜色):

python3 docs/make_texture_manifest.py

输出一张 HTML。

不在文档里存一份静态清单,是因为那种清单必然过期——PhoneTheme 头部那一份就是这么失效的。

老路径仍然识别。 1.2.7 之前所有贴图平铺在 textures/gui/ 下(phone_frame.pngapp_icon_chat.png 这类)。按那套做的资源包无须改动即可继续使用——新路径找不到时自动回退,并在日志中提示一句。新做的资源包请按上面几张表。


首页使用手册 | 上一页:⚙️ 设置 | 下一页:服主须知

Clone this wiki locally