Unity Serializable Class Custom Inspector

时间:2012-11-13 14:18:22

标签: c# unity3d inspector

我有一个非常简单的统一类,UnitRange(有最小和最大范围)。

[System.Serializable]
public class UnitRange {
    public int Minimum;
    public int Maximum;
}

这显示在检查器中(如果我创建了这种类型的公共变量。)虽然它显示的默认方式不是很好:

enter image description here

现在,我想知道如何改变这个?我找到了如何改变monobehaviours的检查员,虽然找不到如何更改其他类的检查员。我希望它只是彼此相邻的两个数字,如下所示:

enter image description here

这只是一件小事,如果不可能的话,这不是一个大问题,虽然知道如何在以后证明更有用。

哦,是的,正如你可能已经注意到的那样,我正在使用c#,所以如果c#中的任何示例代码都会很好。

感谢。

3 个答案:

答案 0 :(得分:2)

在Unity的更高版本中不再适用。

刚发现这是不可能的。

实现这一目标的唯一方法是,无论何时在单一行为中使用它,都要给那个monobehaviour一个自定义检查员,并在那里给你的自定义布局。为了使这更容易,你可以制作一个进行布局的方法,然后在每个monobehaviour中使用它。

答案 1 :(得分:1)

在Unity4中,您可以使用PropertyDrawer

进行此操作

答案 2 :(得分:0)

一个需要编写较少自定义检查器的解决方案是将UnitRange作为一个组件。任何需要UnitRange的内容都可以使用[RequireComponent (typeof (UnitRange))]进行注释,这样您就不必经历自己添加它的麻烦。让UnitRange检查它是唯一附加的(如果不是则错误/删除自身等)。

然后让各个单元使用Start()GetComponent<UnitRange>()上缓存附加的单位范围组件,以备日后使用(如您刚才所做,如果您只是将可见性更改为私有并重复使用)。< / p>

最后 - 编写看起来不错的UnitRange的检查器。