首页 > 其他分享 >如何拆解Unity 2022.3版本的AssetBundle

如何拆解Unity 2022.3版本的AssetBundle

时间:2023-12-01 16:24:56浏览次数:36  
标签:DOTS 社区 Unity AssetBundle UWA 序列化 2022.3

1)如何拆解Unity 2022.3版本的AssetBundle
2)Unity 2022 LTS版本的稳定性
3)关于AssetBundle禁用TypeTree之后的一些可序列化的问题


这是第363篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:465082844

AssetBundle

Q:如何拆解Unity 2022.3及以上版本打出来的AssetBundle?AssetStudio只支持到2022.1,都不维护和更新了。

A1:可以参考:https://github.com/AssetRipper/AssetRipper

感谢zerolj@UWA问答社区提供了回答

A2:如果你习惯使用AssetStudio,可以试试我的Fork,目前支持到2022.3。

GitHub:https://github.com/zhangjiequan/AssetStudio
知乎:https://zhuanlan.zhihu.com/p/659958667

感谢Jackie@UWA问答社区提供了回答


Platform

Q:想从Unity 2021 LTS升级到Unity 2022 LTS,想问下2022的稳定性怎么样?

主要想要的Feature是DOTS的Production Version和Material Variant。

A:DOTS 1.0和DOTS 1.1这两个版本,会导致开发过程中体验比较差(Editor卡、崩溃、莫名其妙编译错误等),对于大规模项目不友好。

运行时与真机的性能不一致,不同真机的性能不一致,需要尽早固化DOTS的核心需求代码进行兼容测试,主要是安卓大小核的问题。

DOTS 1.0至今没有很硬的上线项目,DOTS 0.51甚至更低版本的DOTS都有大DAU项目验证。资料稀少,势必会趟不少自己专属的坑,得有时间预算。

几个DOTS 1.0的功能坑:EntityGraphicAPI,在低端安卓上性能奇差,官方也没有解决的意愿,解决方案是手动修改基于GPU Instance的渲染管线。2D透明的排序有需求的需要魔改URP。

Physics模块如果只用碰撞检测不用物理模拟,建议自己重写,性能可以比自带的提升数十倍。

不要相信TransformAcc。在Entity Query时获取Mono脚本会产生巨量GC,自己魔改源码(很好找这个位置,就是它每次new了一个大数组)开发配套的池去解决这个问题。

其他的由于你自身原因写出来的指针Bug基本都是偶发崩溃,需要大量时间去排查,不按DOTS约定很容易写出数组越界,因为你不知道底层给你的什么块,你Filter之后是什么样,只能小心地去写。按照DOTS规定则会报出易于定位的错误。

林林总总加起来用哪个版本都需要时间去了解,致命坑已经罗列,希望有所帮助。

感谢刘泰言@UWA问答社区提供了回答


AssetBundle

Q:如果AssetBundle禁用了TypeTree,Unity在加载的时候会对其引用的脚本进行“签名”校验(Property Hash和FulIName),而包内的脚本信息只在打包的时候生成,并不能直接更新。因此,在禁用TypeTree的时候,貌似不能对可序列化脚本进行变动更新。

于是,想要咨询两个问题:
1、包内的脚本“签名”信息存放在哪里,存放了什么内容? 猜测是在assets/bin/Data,但具体的位置与内容不清楚。

2、能否在禁用TypeTree的情况下实现可序列化脚本的变化更新(自行保证代码与资源一致)。

A:如果有新增类,DLL,那么还需要更新xxxx_Data\ScriptingAssemblies.json和xxxx_Data\globalgamemanagers,否则就算libil2cpp.so和新的Bundle对上,也会检查不通过。

如果有新的RuntimeInitializeOnLoad函数,那么xxxx_Data\RuntimeInitializeOnLoads.json也要更新。否则相关函数就无法自动启动。

从理论上而言,只要不动到可序列化字段,那么脚本可以改可以更。如果可序列化字段变动了,那么TypeTree就变化,相应的TypeTreeHash也跟着变化,所以so更新以后,引擎就无法解析旧的Bundle。

感谢黄程@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:465082844

标签:DOTS,社区,Unity,AssetBundle,UWA,序列化,2022.3
From: https://www.cnblogs.com/uwatech/p/17869956.html

相关文章

  • Unity2D中瓦片地图的创建与绘制教程
    Unity2D中瓦片地图的创建与绘制素材切割创建地图创建瓦片绘制地图瓦片调色板画笔拓展素材资源链接素材切割选中以下素材,以Tiles为例(素材链接在文章最下方)修改素材属性。将SpriteMode属性改为Multiple多张(不然切割不了);PixelsPerUnit改为16像素;FilterMode改为Point(nofilte......
  • Unity3D角色移动控制脚本
    Unity3D角色移动控制脚本键盘控制方向鼠标控制方向键盘控制方向privateCharacterControllercontroller;publicfloatSpeed=1f;publicfloatRotateSpeed=1f;voidStart(){ controller=transform.GetComponent<CharacterController>();}voidUpdate(){ //键盘......
  • 普通unity项目升级URP管线渲染项目教程
    普通unity项目升级URP管线渲染安装URP插件创建URP渲染管线配置渲染管线升级素材的渲染管线方式一方式二资源链接安装URP插件点击Window选择PackageManager在出现的窗口左上角选择UnityRegistry搜索关键字Universal在出现的UniversalRP插件中下面点击Install创建URP渲染管线安......
  • 使用Unity Localization插件进行项目本地化实战详解
    在使用Unity开发游戏的过程中,本地化是必不可少的。网络上也有很多的本地化工具,本次我介绍的是Unity官方提供的Localization插件,大家可以在PackageManager进行安装 一、语言配置,本地化表创建在ProjectSetting中找到Localization,(需要先创建这个LocalizationSetting文件)点击L......
  • 在Unity中模块化管理自定义功能和资源
    之前在做Unity项目时,有时会遇到多个项目共用同一部分代码或资源的情况。而当被共用的部分需要更新的时候,手动复制替换非常麻烦,并且可能会有遗漏。对于这个问题,一个很好的解决办法是将可复用的文件打包为自定义包(CustomPackage),使用git等版本控制工具来管理每个包的内容。什么是Pa......
  • Unity DOTS系列之Filter Baking Output与Prefab In Baking核心分析
    最近DOTS发布了正式的版本,我们来分享一下DOTS里面Baking核心机制,方便大家上手学习掌握UnityDOTS开发。今天给大家分享的Baking机制中的FilterBakingOutput与PrefabInBaking。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发......
  • Unity DOTS Baking System与Baking World
    最近DOTS终于发布了正式的版本,我们来分享一下DOTS里面Baking阶段,BakingSystem,BakingWorld的关键概念,方便大家上手学习掌握UnityDOTS开发。Unity在Baking也是基于ECS模式开发设计的,所以Baking的时候也会有BakingSystem与BakingWorld,把Baking出来的数据放到BakingWorld里面......
  • Unity DOTS System与SystemGroup概述
    最近DOTS终于发布了正式的版本,我们来分享以下DOTS里面System关键概念,方便大家上手学习掌握UnityDOTS开发。System是迭代计算与处理World中的Entity实体的ComponentData数据的逻辑代码。System对应的代码是运行在mainthread上的。World里面所有的System通过SystemGroup来进行......
  • Unity 最新DOTS系列之《Baking与Baker的详解》
    UnityDOTSBaking与Baker详解UnityDOTSBaking与Baker详解最近DOTS终于发布了正式的版本,我们来分享一下DOTS里面Baking与Baker的关键概念,方便大家上手学习掌握UnityDOTS开发。UnityDOTS开发模式,为了让大家在”创作”游戏的时候使用原来组件方式来编辑游戏场景与资源,同......
  • 如何绕过某讯手游保护系统并从内存中获取Unity3D引擎的Dll文件
    ​ 某讯的手游保护系统用的都是一套,在其官宣的手游加固功能中有一项宣传是对比较热门的Unity3d引擎的手游保护方案,其中对Dll文件的保护介绍如下,“Dll加固混淆针对Unity游戏,对Dll模块的变量名、函数名、类名进行加密混淆处理,有效提高静态分析门槛”。 通过动态分析了它的保护......