为什么不能在带有内联{的变量之前使用[Space(15)],组; }?

ecc*_*cco 0 c# syntax-error unity-game-engine

我正在构造变量,因此可以在Unity Inspector中编辑它们。我正在尝试在几个变量前使用[Space(15)],这些变量具有{get; 组; }。Visual Studio不会编译它。

我放置了一个没有{get; set;}在其他变量的前面,并且似乎可以编译,但这是一个非常丑陋的解决方案。Google对我的修复没有帮助。

这不起作用:

    [Space(15)]
        [SerializeField]
        private bool baa { get; set; }
Run Code Online (Sandbox Code Playgroud)

这确实有效:

    [Space(15)]
        public int foo;
        [SerializeField]
        private bool baa { get; set; }
Run Code Online (Sandbox Code Playgroud)

它应该在没有额外变量的情况下进行编译以放入“;” 在代码中。编译器向我显示以下错误代码:CS0592。

Imm*_*ity 6

您不能序列化属性。该SerializeField属性用于序列化field。同样的做法是Space,在标记之前在检查器中放置广告空间field

Unity不直接支持检查器中属性的序列化。

一种解决方法(虽然有点混乱)是为要序列化的属性声明一个单独的字段。

[Space(15)]
[SerializeField]
private bool _baa;

private bool baa { get => _baa; set => _baa = value; }
Run Code Online (Sandbox Code Playgroud)