繁体   English   中英

Unity Serializable Class Custom Inspector

[英]Unity Serializable Class Custom Inspector

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

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

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

在此输入图像描述

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

在此输入图像描述

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

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

谢谢。

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

刚发现这是不可能的。

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

在Unity4中,您可以使用PropertyDrawer进行此操作

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM