是否可以将下载的游戏对象(使用assetbundle)保存为Prefab而不是Unity3d文件?

时间:2018-07-26 02:09:27

标签: unity3d assetbundle

我的原始预制件(包括模型,着色器,动画,材质,脚本等)被意外消失了。我只能通过服务器下载unity3d文件。下载的对象在UnityEditor中可见。但是我不能将它们存储为预制件(使用拖放OR脚本)。缺少所有组件。

问题:
 -为什么这不可能(游戏对象已加载到RAM中,但为什么我却无法将它们存储在磁盘中)?
 -如何恢复它们?

1 个答案:

答案 0 :(得分:2)

简短的回答是“否”,您不能只在运行时创建预制件。

这样做的原因是,使预制件成为编辑器仅依赖于prefabUtility名称空间一部分的UnityEditor,因此仅在运行时之外可用(依赖于UnityEngine名称空间)。

资产在运行时也几乎全部锁定为只读。

但这并不意味着完全不可能将您的GameObjects恢复为预制件。

您可以编写自己的脚本,将想要的预制的GameObjects序列化为JSON或XML之类的格式,然后制作一个编辑器脚本,对这些数据进行反序列化并从中重建新的预制件。尽管我个人没有任何有关如何最好地解决此问题的示例,但您将不得不自己精确地确定如何做到这一点。

有关JSON序列化的更多信息,请参见here