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


目录

一、使用工具

二、具体操作

【1】利用AssetStudio进行预览

【2】UABE修改之一:对DUMP文本进行修改

【3】UABE修改之一:对RAW进行修改

正文开始:
  汉化过程中需要对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的更多相关文章

  1. Unity手游汉化笔记③:UABE替换BMFont

    总的笔记:https://www.cnblogs.com/guobaoxu/p/12055930.html 目录 一.Demo 二.分析思路 三.替换 四.总结 五.补充 工具: Unity版本:20 ...

  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手游之路<二>Java版服务端使用protostuff简化protobuf开发

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

  7. Unity手游之路<八>自动寻路Navmesh之入门

    http://blog.csdn.net/janeky/article/details/17457533 在的大部分mmo游戏都有了自动寻路功能.点击场景上的一个位置,角色就会自动寻路过去.中间可能会 ...

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

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

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

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

随机推荐

  1. Hibernate框架学习2

    集合映射 public class User { // 一个用户,对应的多个地址 private Set<String> address; private List<String&g ...

  2. 八大排序算法总结与java实现(转)

    八大排序算法总结与Java实现 原文链接: 八大排序算法总结与java实现 - iTimeTraveler 概述 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 ...

  3. Pandas | 20 级联

    Pandas提供了各种工具(功能),可以轻松地将Series,DataFrame和Panel对象组合在一起. pd.concat(objs,axis=0,join='outer',join_axes= ...

  4. Pandas | 12 选项和自定义

    Pandas提供API来自定义其行为的某些方面,大多使用来显示. API由五个相关函数组成.它们分别是: get_option() set_option() reset_option() descri ...

  5. Linux/Unix 多线程通信

    线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用. 不过要注意的是线程间需要做好同步,一般用 mutex. 可以参考一些比较新的 UNIX/Linux ...

  6. TensorFlow多层感知机函数逼近过程详解

    http://c.biancheng.net/view/1924.html Hornik 等人的工作(http://www.cs.cmu.edu/~bhiksha/courses/deeplearni ...

  7. 用luks方式对磁盘进行加密以及加密磁盘的自动挂载

    1.关于luks加密 LUKS(Linux Unified Key Setup)为Linux硬盘分区加密提供了一种标准,它不仅能通用于不同的 Linux发行版本,还支持多用户/口令.因为它的加密密钥独 ...

  8. Spring Boot 2.2.2 发布,新增 2 个新特性!

    Spring Boot 2.2.2 发布咯! Spring Boot 2.2.1 发布,一个有点坑的版本! 2.2.1 发布没过一个月,2.2.2 就来了. Maven依赖给大家奉上: <dep ...

  9. 【技术博客】利用Python将markdown文档转为html文档

    利用Python将markdown文档转为html文档 v1.0 作者:FZK 元素简单的md文件 Python中自带有一个markdown库,你可以直接这样使用 md_file = open(&qu ...

  10. SQL 实现地区的实现树形结构递归查询(无限级分类),level为节点层级,由小至大依次

    //SQL 实现地区的实现树形结构递归查询(无限级分类),level为节点层级,由小至大依次 2018-09-25 StringBuilder areaSQL = new StringBuilder( ...