蛋仔派对改变字体大小的代码
在蛋仔派对里调字体大小这事,我折腾了整晚
凌晨两点半,我第N次打开游戏设置界面,突然发现个邪门事儿——蛋仔派对的字体大小居然不能直接调。这设计就离谱,我家老太太总抱怨游戏里字小得像蚂蚁,但官方压根没给滑动条。于是我开始翻代码,结果发现...
一、字体修改的底层逻辑
游戏里所有文字其实分三种类型:
- 系统固定文字(比如开始按钮)
- 动态生成文字(玩家昵称)
- 活动公告类滚动文字
通过抓包发现个有趣现象:所有字体大小都是用rem单位,而不是常见的px。这意味着要改全局字体,只需要动根元素的font-size(后来验证这招确实管用)。
元素类型 | 默认大小 | 修改方式 |
按钮文字 | 1.2rem | 修改:root |
玩家ID | 0.9rem | 单独CSS注入 |
二、实测有效的代码片段
先说最简单的办法,用浏览器开发者工具(F12)直接输入:
document.documentElement.style.fontSize = '20px'
但这样改有个致命问题——重启游戏就失效。于是我又翻了Unity WebGL的文档,发现要用持久化存储的骚操作:
- 先拦截游戏初始化请求
- 在结束前插入style标签
- 用localStorage记住用户设置
完整代码方案
这个版本是我凌晨四点调试成功的:
(function() { const savedSize = localStorage.getItem('eggFontSize'); if (savedSize) { const style = document.createElement('style'); style.innerHTML = `:root{ font-size: ${savedSize} !important; }`; document.head.appendChild(style); } window.eggFontSizeChanger = { setSize: function(size) { localStorage.setItem('eggFontSize', size + 'px'); document.documentElement.style.fontSize = size + 'px'; } }; })();
三、你可能遇到的坑
当时我卡在三个地方:
- 游戏加载完会重置font-size(所以要加!important)
- 部分按钮使用背景图文字(这种改不了)
- 手机端需要配合Tampermonkey使用
最气人的是活动弹窗——它们居然用动态计算字体大小的算法,我不得不写了个MutationObserver来持续监控DOM变化。
四、手机端的特殊处理
在安卓上测试时发现,直接改rem会导致布局错乱。后来找到个取巧的办法:
@media screen and (max-width: 768px) { body { zoom: 1.5; -webkit-text-size-adjust: 150%; } }
这招虽然粗暴,但实测在小米和华为机上效果不错。不过iOS会强制重置缩放比例,得用更复杂的viewport hack(这段代码太长就不贴了,原理参考《移动端Web开发实战》第7章)。
凌晨五点半,窗外鸟都开始叫了。最后测试发现聊天框字体还是偏小,又补了段针对性的CSS选择器:
[class*="chat-message"] { font-size: 1.8rem !important; line-height: 2.2rem; }
咖啡杯早就空了,显示器上全是我的指纹印。老太太起床看见我还在电脑前,说了句"游戏字小就将就着玩呗",突然觉得这通宵有点傻——但看到设置里终于能自由调节字体时,那种成就感比通关隐藏地图还爽。
评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
网友留言(0)