我在多个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中运行良好。
答案 0 :(得分:4)
https://docs.unity3d.com/Manual/script-Serialization.html州:
序列化规则
Unity中的序列化程序在实时游戏环境中运行。这有一个 对绩效的重大影响。因此,Unity中的序列化 与其他编程中的序列化行为不同 环境。下面概述了一些如何使用的提示 Unity中的序列化。
Unity不支持DateTime
的序列化。
如果您需要DateTime
序列化,那么您可能希望通过ToFileTimeUtc
和FromFileTimeUtc
使另一个long
属性与DateTime
保持同步。或者实施custom serialization。