📜  unity 在检查器中组织变量 - C# (1)

📅  最后修改于: 2023-12-03 15:05:45.082000             🧑  作者: Mango

Unity 在检查器中组织变量 - C#

在 Unity 中,我们可以通过检查器来修改对象的属性,这对于游戏开发非常有用。然而,当我们有大量变量时,如果不组织好,就会让检查器变得很混乱。因此我们需要一种方法来组织变量。

[Serializable] 属性

首先,我们需要将变量序列化,这样我们才能在检查器中看到它们。为了序列化一个变量,我们需要将 [Serializable] 属性添加到它的前面。下面是一个示例:

[Serializable] 
public class PlayerData { 
    public string Name; 
    public int Age; 
}

在这里,我们将 PlayerData 类序列化,使得变量 NameAge 可以在检查器中查看。

使用 [Header] 和 [Space] 组织变量

当我们有很多变量时,我们可以使用 [Header] 属性来给它们分组。我们还可以使用 [Space] 属性来在变量之间添加空格。

例如,我们可以这样组织 PlayerData 变量:

[Serializable] 
public class PlayerData { 
    [Header("Basic Info")]
    public string Name; 
    [Range(0,100)]
    public int Age; 
    
    [Space(10)]
    [Header("Additional Info")]
    public string Address;
    public string Phone;
}

这将把 NameAge 变量放在一个 "Basic Info" 的组里,然后在它们之后添加一个空格。接下来,AddressPhone 变量将放在一个名为 "Additional Info" 的组中。

使用 [SerializeField] 和 [HideInInspector] 控制可见性

有时候,我们想要在检查器中隐藏一些变量,但是仍然希望它们可以序列化。我们可以使用 [HideInInspector] 属性来隐藏它们。例如:

[Serializable] 
public class PlayerData { 
    [Header("Basic Info")]
    public string Name; 
    [Range(0,100)]
    public int Age; 
    
    [Space(10)]
    [Header("Additional Info")]
    [SerializeField]
    private string Address;
    [SerializeField]
    private string Phone;
    
    [HideInInspector]
    public string SecretData; 
}

这里我们将 AddressPhone 变量标记为 [SerializeField],因为它们需要序列化。然后,我们将 SecretData 变量标记为 [HideInInspector],因为我们希望它不是公开的。

总结

在 Unity 中,我们可以使用 [Serializable][Header][Space][SerializeField][HideInInspector] 等属性来控制变量在检查器中的可见性和组织方式。这样可以使得检查器更加清晰易读,提高代码的可维护性。