在一个类中的检查器中隐藏字段,但不在另一个类中隐藏

时间:2015-12-27 22:51:07

标签: c# unity3d

我有三个班级,班级A是抽象的,班级BC扩展了它。

当我将A放在游戏对象上时,有没有办法在类C中隐藏属性,并在将B放在游戏对象上时显示它?

public abstract class A : MonoBehaviour {
    public float myFloat = 0f;
}

public class B : A {
    // Show myFloat in inspector
}

public class C : A {
    // Do not show myFloat in inspector
}

我能想到的唯一另一种方法是为这两个类创建自己的编辑器类,但如果可能的话我想避免这样做......

3 个答案:

答案 0 :(得分:1)

查看自定义检查员:https://unity3d.com/learn/tutorials/modules/intermediate/editor/building-custom-inspector。这允许您为您喜欢的任何类型自定义Inspector。

这肯定会起作用,但如果您的类型中有许多成员,则可能会很麻烦。除此之外,我没有太多机会。

答案 1 :(得分:0)

看一下[HideInInspector],你需要应用定义变量的属性。

Unity3d docs网站中引用的示例(提供的帮助很少......):

public class ExampleClass : MonoBehaviour 
{
    [HideInInspector]
    public int p = 5;
}

答案 2 :(得分:0)

我认为你的意思是你是否可以在一个派生类中隐藏父(Abstract)类中的变量,并让它可以从其他派生类访问?如果我是对的,那么使用私有/受保护的继承就无法使用C#,因为C#只允许公共继承。