为什么DateTime是ISerializable在Unity C#中返回false?

时间:2017-09-15 09:54:27

标签: c# .net datetime unity3d mono

我在多个c#版本中尝试了以下代码,并作为例外工作:

System.DateTime date = new System.DateTime (1024);
Console.Write (date is System.Runtime.Serialization.ISerializable);

输出:

True

但是当我在Unity中运行它时,它返回false并且代码出错:

System.DateTime date = new System.DateTime (1024);
UnityEngine.Debug.Log (date is System.Runtime.Serialization.ISerializable);

输出:

False

我想检测对象是否可以ISerializable然后前进并使用GetObjectData方法对其进行序列化,但是当我在Unity中尝试使用DateTime时它会返回false,因为DateTime正在实现ISerializable。

Unity使用.NET 3.5和Mono(我不知道哪个单声道版本。)

代码在.NET 4.5中运行良好。

Try it online

1 个答案:

答案 0 :(得分:4)

https://docs.unity3d.com/Manual/script-Serialization.html州:

  

序列化规则

     

Unity中的序列化程序在实时游戏环境中运行。这有一个   对绩效的重大影响。因此,Unity中的序列化   与其他编程中的序列化行为不同   环境。下面概述了一些如何使用的提示   Unity中的序列化。

Unity不支持DateTime的序列化。

如果您需要DateTime序列化,那么您可能希望通过ToFileTimeUtcFromFileTimeUtc使另一个long属性与DateTime保持同步。或者实施custom serialization