【开发日志#3】像素字体/分辨率

10/23115 浏览综合

中文像素字体

  • 之前用过的像素字体,这次偶然发现评论区有人提到版权隐患。。决定换一个。找了一圈最后在某开源大社找到一个看起来很棒的,作者还在积极更新。
  • 对比游戏分辨率570x320,最终选了12px版;10px的用在传呼机上感觉也很合适,但是貌似适配的汉字还不太完整,一级汉字只能覆盖90%多点;考虑到游戏里字比较多,就算了
  • 确定字体后,就是把字体导入 Unity,总共大概分3步;
  • 首先得做一个自定义字符表;字体官方提供了一份字表但是里面汉字太多了好几万。。我就在网上找了份几千常用汉字表替换了一下
  • 然后把字体文件导入unity,import setting里把尺寸设为12也就是原始大小,渲染模式改为Hinted Raster,避免抗锯齿模糊
  • 最后在TextMeshPro用第一步做的字符表生成Font Asset (花了15分钟。。);(1024x1024好像完全放不下。。padding我看有人提到最好不要低于point size的10~30%就没选太小):
TapTap
生成Font Asset配置

分辨率

  • 最后,像素字体如果任意倍数缩放很容易出现不均匀的失真,我参考Unity官方的Pixel Perfect repo做了个CustomCanvasScaler;
  • 游戏会基于570x320,按照小于玩家窗口分辨率的最高整数倍来显示,比如玩家resize窗口到1920x1080,游戏就会调整到1710x960(3倍),剩余空间用黑边填充:
TapTap
1920x1080下,实际显示1710x960,剩余黑边填充
  • 这是同分辨率下,按3.3倍左右放大填满整个窗口的效果,字体和像素dithering的变形还是挺明显的:
TapTap
1920x1080,放大约3.3倍填满画面
11
1
7