【问题标题】:Unity Asset Bundles backward compatibilityUnity Asset Bundles 向后兼容性
【发布时间】:2014-05-01 08:03:57
【问题描述】:

我在一个项目中工作,我们使用 Unity3D ...我们正在动态加载我们的资产包。但是我们想在我们的应用程序版本之间添加向后兼容性。

假设我发布了 1.05.0 版本并且用户加载了某个 Asset Bundle,之后用户下载了 1.06.0 版本,其中包含在 1.05.0 版本中使用的一些脚本的一些更改

我可以让 1.06.0 版与 1.05.0 版的同一个 Asset Bundle 一起使用吗?! 还是那不可行?!

提前致谢

【问题讨论】:

    标签: c# android ios unity3d


    【解决方案1】:

    “某些脚本中的一些变化”相当模糊。

    一般来说,资产包不直接包含脚本,但它们确实包含对脚本(如果您移动脚本可能会损坏)和属性(如果您重构可能会变得复杂)的引用。 Unity Answers does have some more detailed information.

    如果您所做的只是对某个脚本的 Update() 函数进行一些小调整,那么您应该没问题。

    如果您重命名脚本或在程序集之间移动脚本,您可能会遇到问题。

    如果您创建新的序列化字段,旧资产包将不包含这些字段,并且它们将在实例化时接收其默认值。

    如果您删除现有的序列化字段,它们将在实例化时被忽略。

    如果您重命名或更改现有序列化字段的类型,Unity 将“尝试”协调它,但我不会指望它工作。

    如果您正在寻找更强大的系统,您最好附加“普通旧数据”组件来序列化您的数据,然后使用该数据在运行时重建您的资产。

    【讨论】:

    • 首先,感谢您的帮助。其次,我的意思是更改(添加或删除字段)......在这种情况下,我怎样才能使 Asset Bundles 向后兼容?!
    • 请问您能否向我解释一下您对更强大系统的想法是什么意思?
    • 就像我提到的:在以后的版本中删除的字段将被忽略,而在以后的版本中添加的字段将以其默认值结束。至于更强大的系统,我指的是任何部分或完全绕过 Unity 的内置序列化以支持将 you 控制的东西放在一起的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多