我如何在Unity中序列化c#的属性

Blu*_*ple 2 c# serialization properties unity-game-engine

我认为实现这两行变量效率很低。

[SerializeField] private int i;
public int I => i;
Run Code Online (Sandbox Code Playgroud)

所以我想用一行来表达这一点,但这在Unity中没有序列化。

[SerializeField] public int I { get; private set; }
Run Code Online (Sandbox Code Playgroud)

我想让它在 Unity Inspector 中可见。

所以我的问题如下。

  1. 这个属性可以序列化吗?
  2. 如果不可能,是否可以通过上述以外的方式解决?

小智 6

从 C# 7.3(Unity 支持)开始,您现在可以向自动属性生成的支持字段添加属性。

对于此实例,支持字段是自动生成的,您可以添加此属性:

[field: SerializeField] public int MyField { get; private set; }
Run Code Online (Sandbox Code Playgroud)

这会序列化支持字段,就像它是一个普通变量一样。