Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 是否可以将游戏对象及其组件保存在Unity中?_Unity3d_Serialization_Save_Load - Fatal编程技术网

Unity3d 是否可以将游戏对象及其组件保存在Unity中?

Unity3d 是否可以将游戏对象及其组件保存在Unity中?,unity3d,serialization,save,load,Unity3d,Serialization,Save,Load,我正在尝试保存/序列化游戏对象及其组件(使用它们的当前值),但我认为这是不可能的,有什么想法吗 请记住,我不想使用资产存储中的资产,我想自己编写代码。 提前感谢:)对不起,我没有代表发表评论。我使用两种方法来实现此保存状态。 首先是程序员的建议,创建一个类来承载重新创建对象所需的属性。组件名称可以保存为字符串,然后使用 gameObject.AddComponent(Type.GetType(componentName)) 如果你经常这样做的话,可能值得先看看这个论坛 您可以使用unity se

我正在尝试保存/序列化游戏对象及其组件(使用它们的当前值),但我认为这是不可能的,有什么想法吗

请记住,我不想使用资产存储中的资产,我想自己编写代码。
提前感谢:)

对不起,我没有代表发表评论。我使用两种方法来实现此保存状态。 首先是程序员的建议,创建一个类来承载重新创建对象所需的属性。组件名称可以保存为字符串,然后使用
gameObject.AddComponent(Type.GetType(componentName))
如果你经常这样做的话,可能值得先看看这个论坛

您可以使用unity serializer(类型的字符串名称将序列化)序列化这些类。您可能需要创建一个子类来处理不同类型的每个对象中的值

这可能是一种相当复杂的方法,因此我更喜欢为resources文件夹中的预制件序列化文件路径。任何需要保存的值都可以保存在可序列化类中,如保存的预制件上的脚本中引用的第一种方法。此脚本有一种方法可以将反序列化类中保存的所有详细信息应用于预制件详细信息由脚本捕获,添加到类中,并在需要记录对象状态时序列化


具体的管理方式可能会有所不同,但我自己已经这样做了,能够存储我可能需要的任何值。即使使用资产存储中的第三方序列化程序,保存整个对象仍然会有困难,但您将能够获得足够的信息来重新创建。

我已经保存了我想要的组件(自定义脚本)将它们保存在json文件中,然后用二进制文件序列化,这样它们就更安全了。
感谢所有试图帮助您的人…

您无法序列化游戏对象。只需序列化附加到该游戏对象的组件的值。这意味着您必须创建一个脚本,其中包含您希望能够序列化和反序列化的重要游戏变量。该脚本不应继承自
monobhavior
在我的例子中,变量类型不能被序列化,这就是问题所在…变量类型是什么?一个引用其他类的变量,例如…就像我的第一条评论所说的,一个类可以被序列化,但它不能继承自
monobhavior