Unity2020降至Unity2018-UI兼容方案

Unity2020降至Unity2018-UI兼容方案

低版本可以往高版本兼容,但是低版本UI脚本丢失。

接到降级发布需求,从Unity2020降到2018合并兄弟项目,UI不兼容手动绑定。工作量巨大,那么重新手动绑定,想想不太可能,整个游戏上百UI,从新查阅官方手册。

参考手册: docs.unity.cn/cn/2019.4

Unity UI 现在是一个包

Unity UI (UGUI) 现在是一个包 (com.unity.ugui)。可以从 Package Manager(菜单:Window > Package Manager)访问它。

Unity UI 是 Unity 随附的核心包。您无需将其安装在新项目中。 当您将使用 2019.2b1 和更早版本创建的现有 Unity 项目升级到 Unity 2019.2 时,会自动添加此包。 程序集定义会自动获得对 uGUI 程序集的引用。 如果在较旧的 Unity 版本之上安装 Unity 2019.2,请确保已删除 \Editor\Data\UnityExtensions\Unity 中的 GUISystem 文件夹。否则,您可能会收到类重新定义错误。 Unity UI 源代码不再发布到 BitBucket,因为 Unity 会随该包一起提供这些代码。 Unity UI API 文档不再出现在主要的脚本 API 参考中。您可以从 Unity UI 包文档的“脚本 API”部分访问它。

新版UI 指南

docs.unity3d.com/Packag


那么就自撸修改 预设上的fileID与guid。

一、读取 com.unity.ugui@1.0.0\Runtime 收集所有脚本meta上的guid与fileId,小伙伴发现fileId是静态的 11500000 太开心了。

二、收集Unity 内置dll

思路1:Unity FileId 生成规则:MD4("s\0\0\0" + t.Namespace + t.Name

Unity脚本引用原理,修复Unity脚本引用丢失,源码脚本与dll中的脚本引用互换 .

思路2: 生成临时预设 -> 获取LocalFileIdentifier -> 读取本地meta文件guid与fileId

又发现guid都是 f70555f144d8491a825f0804e09c671c

三、有用的东西已好好收集了(其实楼主研究了半天),重新生成预设

https://www.zhihu.com/video/1569080806936588289

好的完结散花,愉快省下一周工作量。

编辑于 2022-11-07 12:02 ・IP 属地广东