Unity手游汉化笔记①:UABE+AssetStudio编辑MonoBehavior类型Asset
总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html
目录
正文开始:
汉化过程中需要对MonoBehavior类型的Asset进行修改,主要是修改Text对象的预设文字,也就是正向开发中,在Inspector里面输入的文字,一般是那些固定的、不会变的文字,另外还有对TextMeshPro使用的字体也需要进行MonoBehavior的修改。
一、使用工具:
Unity版本:2018.4.5f1
AssetStudio(地址:https://www.perfare.net/tag/assetstudio)
UABE(地址:https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor)
二、具体操作:
示例DEMO:我用Unity直接做的,什么都没有,只在屏幕上有一个Text,上面写着“在Inspector的文本”
【1】利用AssetStudio进行预览
这个比较简单,把apk用解压工具解压,然后用AssetStudio加载assets\bin\Data文件夹,在第一次查看MonoBehavior类型的Asset的时候,需要加载保存DLL的文件夹,如果是Mono脚本后端,DLL存放在Data/Manager文件夹下,如果是il2cpp脚本后端,需要先用il2cppdumper工具得到DLL(地址:https://www.perfare.net/tag/il2cppdumper)
如果操作正确,那么在AssetStudio的右侧预览中可以看到Text的参数列表,在Inspector中设置的文本也在,如下图所示。右键Show Original File发现该MonoBehaviour在level0文件。我对AssetStudio做了点小修改,直接在页面右下角打印了文件名+PathID,会方便的多。
【2】UABE修改之一:对DUMP文本进行修改
注意,UABE也是需要DLL才能正确得到DUMP文本的,所以如果是il2cpp脚本后端,也需要上一步中导出的DLL。
① 用UABE打开上一步中确定的level0文件,找到刚才的MonoBehaviour
② 点击右侧Export Dump,会弹窗提示,这时候点击“是”,然后给他选择所需要的DLL就可以了,然后就提示保存的位置了,保存好Dump的文本。
注意,不一定能找到所有的DLL的,事实上有很有预设资源也是MonoBehavior类型,他们指向的类可能没有被编译进来(因为不需要),只需要保证要改的MonoBehavior指向的类所在的DLL有就可以了。UABE会自动先在Data\Manager文件夹下找,找不到的才会弹窗要。还有选完DLL会有个小黑窗出来一会会儿。
③ 用Sublime Text打开DUMP文本,也可以用其他的编辑器,但是一定要可以用UTF-8编码,修改完保存。
④ 回到UABE,右侧Import Dump,选择编辑过的文本,点击ok保存
注意,UABE只能另存为,也就是说你不能直接保存回源文件,而是要保存到另一个地方,然后在复制粘贴覆盖回去
⑤ 压回源文件,进行重新签名或者做针对其他安全机制的操作,我的示例APP直接用Unity导的APK,根本不需要任何针对安全机制的操作,改完直接就能安装_(:з」∠)_
操作正确的话结果如下
【3】UABE修改之一:对RAW进行修改
所谓RAW就是直接DUMP出编译后的内容,然后直接对二进制文件进行修改,这种不需要DLL,要通用的多,我在实际应用中遇到过UABE不吃il2cppdumper得到的DLL的情况。
① 还是用UABE打开第一步得到的level0,还是刚才那个MonoBehavior
② 右侧Export RAW,这次就不需要DLL了,然后用可以编辑十六进制的工具打开得到的dat文件,我用的是010 Editor,要修改的字符串在该文件的最后
③ 修改字符串
字符串写入的规则是,
(1) 用UTF-8编码成byte
(2) 写入byte数目,32位整数,小端模式
(3) 按顺序放入byte
(4) 补零,使得当前位置向4byte对齐,也就是当前位置对4byte取余为0
按照这个规则修改上面的字符串,如下
④ 回到UABE,右侧Import RAW
⑤ 保存写回
最终效果如下:
Unity手游汉化笔记①:UABE+AssetStudio编辑MonoBehavior类型Asset的更多相关文章
- Unity手游汉化笔记③:UABE替换BMFont
总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.Demo 二.分析思路 三.替换 四.总结 五.补充 工具: Unity版本:20 ...
- Unity手游汉化笔记②:使用UABE替换TTF字体
总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.分析 二.思路 三.具体实践 四.总结 Unity版本:2018.4.5f1 工具 ...
- 知物由学|游戏开发者如何从容应对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做聊天模块的程序,避免许多坑,我在 ...
随机推荐
- Hibernate框架学习2
集合映射 public class User { // 一个用户,对应的多个地址 private Set<String> address; private List<String&g ...
- 八大排序算法总结与java实现(转)
八大排序算法总结与Java实现 原文链接: 八大排序算法总结与java实现 - iTimeTraveler 概述 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 ...
- Pandas | 20 级联
Pandas提供了各种工具(功能),可以轻松地将Series,DataFrame和Panel对象组合在一起. pd.concat(objs,axis=0,join='outer',join_axes= ...
- Pandas | 12 选项和自定义
Pandas提供API来自定义其行为的某些方面,大多使用来显示. API由五个相关函数组成.它们分别是: get_option() set_option() reset_option() descri ...
- Linux/Unix 多线程通信
线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用. 不过要注意的是线程间需要做好同步,一般用 mutex. 可以参考一些比较新的 UNIX/Linux ...
- TensorFlow多层感知机函数逼近过程详解
http://c.biancheng.net/view/1924.html Hornik 等人的工作(http://www.cs.cmu.edu/~bhiksha/courses/deeplearni ...
- 用luks方式对磁盘进行加密以及加密磁盘的自动挂载
1.关于luks加密 LUKS(Linux Unified Key Setup)为Linux硬盘分区加密提供了一种标准,它不仅能通用于不同的 Linux发行版本,还支持多用户/口令.因为它的加密密钥独 ...
- Spring Boot 2.2.2 发布,新增 2 个新特性!
Spring Boot 2.2.2 发布咯! Spring Boot 2.2.1 发布,一个有点坑的版本! 2.2.1 发布没过一个月,2.2.2 就来了. Maven依赖给大家奉上: <dep ...
- 【技术博客】利用Python将markdown文档转为html文档
利用Python将markdown文档转为html文档 v1.0 作者:FZK 元素简单的md文件 Python中自带有一个markdown库,你可以直接这样使用 md_file = open(&qu ...
- SQL 实现地区的实现树形结构递归查询(无限级分类),level为节点层级,由小至大依次
//SQL 实现地区的实现树形结构递归查询(无限级分类),level为节点层级,由小至大依次 2018-09-25 StringBuilder areaSQL = new StringBuilder( ...