Unity手游汉化笔记②:使用UABE替换TTF字体
总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html
目录
Unity版本:2018.4.5f1
工具:UABE(地址:https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor)
一、分析
在Unity中,可以看到一个TTF文件在导入后,可以展开成下面这样

也就是一个大哥带两个小弟,合理猜测在这个“大哥”的二进制块中会包含指向两个“小弟”的指针
二、思路
首先实验只替换“大哥”,同时要保持两个指向小弟的指针不变,如果可以正常显示就结束,如果不行就把两个“小弟”在一起替换
三、具体实践
【1】Demo
用Unity导出两个Demo,内容上都只有一个Text,但用了不同的字体,目标是把仿宋Demo的字体改成楷体
【2】用UABE导出
在UABE里可以直接看到字体名字的FONT类型资源,先试着DUMP出文本,仿宋的文本DUMP出来之后非常大,足足有300M,用VS Code打开(用记事本肯定打不开的),可以看到内容如下

显然两个指针是要保留的,但是其他数据不用动,如果继续用文本,感觉实在太慢了,所以转而用RAW。于是分别DUMP出仿宋Demo和楷体Demo的字体,得到两个dat格式的文件。
【3】对二进制文件的处理
对楷体的dat文件进行处理,替换那两个指针,换成和仿宋的dat一样
根据DUMP文本,首先是字体名字,一个变长的String,然后一个32位数,随后是第一个指针,然后再一个32位数,第二个指针,只需要把楷体的这两个指针改掉即可

【4】写回楷体Demo
用UABE打开仿宋Demo的资源文件,Import Raw,选择修改后的楷体dat文件,写回,重新打包
【5】结果

仿宋Demo的字体被成功替换成楷体
四、总结
完整的操作过程是:
① 分别得到新字体.dat,旧字体.dat
② 把新字体.dat的两个指针改成和旧字体.dat一致
③ 把新字体.dat写入旧字体的资源文件里去,代替旧字体
麻烦的点:新字体需要专门去建一个Unity工程并编译来得到二进制描述,而且版本要相近,本文demo中的指针是一个32位数表示文件、一个64位数表示对象,但是我记得某个版本有变化,所以最好版本相近甚至相同。
Unity手游汉化笔记②:使用UABE替换TTF字体的更多相关文章
- Unity手游汉化笔记③:UABE替换BMFont
总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.Demo 二.分析思路 三.替换 四.总结 五.补充 工具: Unity版本:20 ...
- Unity手游汉化笔记①:UABE+AssetStudio编辑MonoBehavior类型Asset
总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.使用工具 二.具体操作 [1]利用AssetStudio进行预览 [2]UABE修 ...
- 知物由学|游戏开发者如何从容应对Unity手游风险?
本文由 网易云发布. "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不 ...
- Unity手游引擎安全解析及实践
近日,由Unity主办的"Unity技术开放日"在广州成功举办,网易移动安全技术专家卓辉作为特邀嘉宾同现场400名游戏开发者分享了网易在手游安全所积累的经验.当下,很多手游背后都存 ...
- Unity手游之路<七>角色控制器
Unity手游之路<七>角色控制器 我们要控制角色的移动,可以全部细节都由自己来实现.控制角色模型的移动,同时移动摄影机,改变视角.当然Unity也提供了一些组件,可以让我们做更少的工作, ...
- Unity手游之路<二>Java版服务端使用protostuff简化protobuf开发
http://blog.csdn.net/janeky/article/details/17151465 开发一款网络游戏,首先要考虑的是客户端服务端之间用何种编码格式进行通信.之前我们介绍了Unit ...
- Unity手游之路<八>自动寻路Navmesh之入门
http://blog.csdn.net/janeky/article/details/17457533 在的大部分mmo游戏都有了自动寻路功能.点击场景上的一个位置,角色就会自动寻路过去.中间可能会 ...
- Unity手游之路<十三>手游代码更新策略探讨
http://blog.csdn.net/janeky/article/details/25923151 这几个月公司项目非常忙,加上家里事情也多,所以blog更新一直搁置了.最近在项目开发上线过程中 ...
- unity手游之聊天SDK集成与使用一
手游中都有聊天功能,比如公会,私聊,世界聊天,那么找一个好用,功能强大的SDK的可以节省很多精力,帮助我们提高开发速度与游戏质量. 写本篇博文是为了方便使用这个SDK做聊天模块的程序,避免许多坑,我在 ...
随机推荐
- emacs第一天
emacsbinw64.sourceforge.net windows的emacs下载地方(绿色软件) 学习快速入门 C-h t 快速入门的帮助文档 C-h 是prefix key 光标移动快捷键 ...
- Pandas | 23 分类数据
通常实时的数据包括重复的文本列.例如:性别,国家和代码等特征总是重复的.这些是分类数据的例子. 分类变量只能采用有限的数量,而且通常是固定的数量.除了固定长度,分类数据可能有顺序,但不能执行数字操作. ...
- ESA2GJK1DH1K升级篇: IAP详解
前言: 源码下载链接: https://gitee.com/yang456/STM32_IAP_Learn.git 后期所有出售的升级程序皆在此代码之上进行优化和开发 请必须把此文章各个的地方的说明看 ...
- kafka如何保证数据可靠性和数据一致性
数据可靠性 Kafka 作为一个商业级消息中间件,消息可靠性的重要性可想而知.本文从 Producter 往 Broker 发送消息.Topic 分区副本以及 Leader 选举几个角度介绍数据的可靠 ...
- Debian使用小计
1. Debian无法apt install debian安装完成后,如果运行apt install,提示 Media change: please insert the disc labeled ' ...
- 记遇到的Release和Debug下有些不同
平常开发用Debug,但是发布的时候用Release,应该是很多单位都会用的,但是有的时候你发现Debug下好使,Release下不好使,这就遇到坑了. 我也是这两天连续遇到了两次,在此记录一下,如果 ...
- kubernetes 中遇见的一些坑(持续更新)
一.官网镜像无法下载 解决方法:需要翻墙 配置docker翻墙机: cat /usr/lib/systemd/system/docker.service [Service] Environment ...
- Redis与Mysql双写一致性方案解析
一 前言 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用.在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存 ...
- MySql查询数据令某字段显示固定值
我们用SQL查询数据时后,基于某些原因不想看到某字段的值,比如密码,我们可以通过创建视图,忽略某一字段的值. 同时我们也可以直接通过SQL语句来让其显示某个固定值: (1)一般查询语句: SELECT ...
- SpringCloud组件学习-图
图很清晰,直接放大浏览器,或者下载下来放大看