总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html


目录

一、Demo

二、分析思路

三、替换

四、总结

五、补充

工具:

  Unity版本:2018.4.5f1

  Bitmap Font Generator:简称BMFont,就是常用的那个做位图字体的工具,地址:http://www.angelcode.com/products/bmfont/

  AssetStudio:地址:https://www.perfare.net/tag/assetstudio

  UABE:地址:https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor

一、Demo

  BMFont主要是NGUI在用,所以先做一个简单的Demo,用UGUI在屏幕上写一行字,采用黑体做成的BMFont,先用BMFont软件做,再导入Unity,Demo效果如下。目标是给他换成别的字体。

二、分析思路

  BMFont由两部分组成,一张图+一个文本(fnt后缀名),但是在导入Unity的时候,NGUI插件还加了一个Prefab和一个Material,不管怎么样,先用AssetStudio来预览,首先图是找到了,这个肯定是要改的,也比较简单,然后是找到了一个MonoBehavior,参数预览如下:

  显然BMFont的文本被改写成了这个MonoBehavior,那么替换就很简单了,再做一个含有新字体的APK,先用UABE导出需要替换的这两个部分,再导回去就结束了

三、替换

  和TTF不同,BMFont一般不会包含很多字符,所以用UABE来DUMP文本的话并不会很大。首先是这MonoBehavior的替换,分别Dump出新旧字体的参数文本,把新字体里面的指针都改成和旧字体一样,如下图红圈覆盖部分,然后把新字体的参数导入给旧字体。

  图片替换就比较简单了,直接找到图片对应的Texture2D,右侧Plugins-Edit-Load新图,即可。

  最后保存重新打包APK就完成了,最终效果如下

四、总结

  完整操作:

  ① 用新字体做一个简易Demo

  ② 用新字体的MonoBehavior和图片分别替换

  ③ 实际上在MonoBehavior里面有一个指针指向了Material,如果替换之后效果不理想,可以把他也替换了,和替换MonoBehavior的时候相似,内部的指针必须保持

五、补充

  在实际应用中,我曾经遇到了文本和图片还保留着的情况,测试过,没有了MonoBehavior要替换,取而代之的是TextAsset和Texture2D要换,这两个UABE都有插件,替换起来很方便。而且只需要用BMFont做出新字体就可以了,不需要用Unity。

Unity手游汉化笔记③:UABE替换BMFont的更多相关文章

  1. Unity手游汉化笔记①:UABE+AssetStudio编辑MonoBehavior类型Asset

    总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.使用工具 二.具体操作 [1]利用AssetStudio进行预览 [2]UABE修 ...

  2. Unity手游汉化笔记②:使用UABE替换TTF字体

    总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.分析 二.思路 三.具体实践 四.总结 Unity版本:2018.4.5f1 工具 ...

  3. 知物由学|游戏开发者如何从容应对Unity手游风险?

    本文由  网易云发布. "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不 ...

  4. Unity手游引擎安全解析及实践

    近日,由Unity主办的"Unity技术开放日"在广州成功举办,网易移动安全技术专家卓辉作为特邀嘉宾同现场400名游戏开发者分享了网易在手游安全所积累的经验.当下,很多手游背后都存 ...

  5. Unity手游之路<七>角色控制器

    Unity手游之路<七>角色控制器 我们要控制角色的移动,可以全部细节都由自己来实现.控制角色模型的移动,同时移动摄影机,改变视角.当然Unity也提供了一些组件,可以让我们做更少的工作, ...

  6. Unity手游之路<十三>手游代码更新策略探讨

    http://blog.csdn.net/janeky/article/details/25923151 这几个月公司项目非常忙,加上家里事情也多,所以blog更新一直搁置了.最近在项目开发上线过程中 ...

  7. unity手游之聊天SDK集成与使用一

    手游中都有聊天功能,比如公会,私聊,世界聊天,那么找一个好用,功能强大的SDK的可以节省很多精力,帮助我们提高开发速度与游戏质量. 写本篇博文是为了方便使用这个SDK做聊天模块的程序,避免许多坑,我在 ...

  8. Unity手游之路手游代码更新策略探讨

    版权声明: https://blog.csdn.net/janeky/article/details/25923151 这几个月公司项目非常忙.加上家里事情也多,所以blog更新一直搁置了. 近期在项 ...

  9. Unity手游之路<二>Java版服务端使用protostuff简化protobuf开发

    http://blog.csdn.net/janeky/article/details/17151465 开发一款网络游戏,首先要考虑的是客户端服务端之间用何种编码格式进行通信.之前我们介绍了Unit ...

随机推荐

  1. Pandas | 14 统计函数

    统计方法有助于理解和分析数据的行为.可以将这些统计函数应用到Pandas的对象上. pct_change()函数 系列,DatFrames和Panel都有pct_change()函数.此函数将每个元素 ...

  2. 研究下vc++的abort函数

    最近在调试几个问题时,发现跟abort函数有关,以前只是简单使用,现在却发现不简单,就多留意了下. 简介 abort中止当前进程并返回错误代码.异常终止一个进程.中止当前进程,返回一个错误代码.错误代 ...

  3. Layui 隐藏左侧菜单

    简单实现 //隐藏菜单 var bl = $("#LAY_app_flexible").hasClass("layui-icon-shrink-right"); ...

  4. cf1206解题报告

    目录 cf1206解题报告 A B C D E,F cf1206解题报告 A 模拟 #include <bits/stdc++.h> using namespace std; int n, ...

  5. 关于window PC机的预定义宏win32

    MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32.这三个常量如何使用呢?看起来简单,其实是很困惑的. 在 Win32 配置下,WIN32 在“项目属性-C/C ...

  6. Apache的代理服务器的配置 (正向代理 ,反向代理,轮询调度)

    一. 代理服务器的了解1.代理服务器 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自 ...

  7. exports与module.exports的区别,以及export与export.defult的区别

    在 JS 模块化编程的模块引入上, 主要有两种方式: CommonJS 模块标准 ES6 moduel 特性 1. CommonJS 模块引入:require() 模块导出:exports 或者 mo ...

  8. 分布式系统中我们会对一些数据量大的业务进行分拆,分布式系统中唯一主键ID的生成问题

    分布式全局唯一ID生成策略​ https://www.cnblogs.com/vandusty/p/11462585.html 一.背景 分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订 ...

  9. thinkphp5用了哪些设计模式

    一.设计模式简介 首先我们来认识一下什么是设计模式:设计模式是一套被反复使用.容易被他人理解的.可靠的代码设计经验的总结.设计模式不是Java的专利,我们用面向对象的方法在PHP里也能很好的使用23种 ...

  10. 分享一个Linux C++消息通信框架TCPSHM

    由于本人从事行业关系,Linux环境下的低延迟通信是我关注的技术之一.要达到极端的低延迟,当然同机器内IPC比网络通信快,而Linux IPC方式中无疑是共享内存延迟最低.不过相对于TCP这种通用的通 ...