为什么 DateTime 在 Unity C# 中是 ISerializable returns false?
Why DateTime is ISerializable returns false in Unity C#?
我已经在多个 c# 版本中尝试了以下代码并且工作正常:
System.DateTime date = new System.DateTime (1024);
Console.Write (date is System.Runtime.Serialization.ISerializable);
输出:
True
但是当我 运行 它在 Unity 中时它 return 是错误的并且代码出错了:
System.DateTime date = new System.DateTime (1024);
UnityEngine.Debug.Log (date is System.Runtime.Serialization.ISerializable);
输出:
False
我想检测对象是否可序列化,然后继续使用 GetObjectData 方法对其进行序列化,但是当我在 Unity 的 DateTime 上尝试它时,它 returns false 而它应该 return true 因为 DateTime 正在实现 ISerializable。
Unity 使用 .NET 3.5 和 Mono(我不知道是哪个 mono 版本)。
代码在 .NET 4.5 中运行良好。
https://docs.unity3d.com/Manual/script-Serialization.html 状态:
Serialization rules
Serializers in Unity run in a real-time game environment. This has a
significant impact on performance. As such, serialization in Unity
behaves differently to serialization in other programming
environments. Outlined below are a number of tips on how to use
serialization in Unity.
唉,Unity 不支持 DateTime
的序列化。
如果您需要 DateTime
序列化,那么您可能希望通过 ToFileTimeUtc
and FromFileTimeUtc
. Or implement custom serialization 与 DateTime
保持同步的另一个 long
属性。
我已经在多个 c# 版本中尝试了以下代码并且工作正常:
System.DateTime date = new System.DateTime (1024);
Console.Write (date is System.Runtime.Serialization.ISerializable);
输出:
True
但是当我 运行 它在 Unity 中时它 return 是错误的并且代码出错了:
System.DateTime date = new System.DateTime (1024);
UnityEngine.Debug.Log (date is System.Runtime.Serialization.ISerializable);
输出:
False
我想检测对象是否可序列化,然后继续使用 GetObjectData 方法对其进行序列化,但是当我在 Unity 的 DateTime 上尝试它时,它 returns false 而它应该 return true 因为 DateTime 正在实现 ISerializable。
Unity 使用 .NET 3.5 和 Mono(我不知道是哪个 mono 版本)。
代码在 .NET 4.5 中运行良好。
https://docs.unity3d.com/Manual/script-Serialization.html 状态:
Serialization rules
Serializers in Unity run in a real-time game environment. This has a significant impact on performance. As such, serialization in Unity behaves differently to serialization in other programming environments. Outlined below are a number of tips on how to use serialization in Unity.
唉,Unity 不支持 DateTime
的序列化。
如果您需要 DateTime
序列化,那么您可能希望通过 ToFileTimeUtc
and FromFileTimeUtc
. Or implement custom serialization 与 DateTime
保持同步的另一个 long
属性。