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

本文关键字:隐藏 字段 另一个 一个 检查 | 更新日期: 2023-09-27 18:28:15

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

当我把C放在游戏对象上时,有没有办法隐藏类A中的属性,当我把类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
}

我唯一能想到的另一种方法是为这两个类创建我自己的Editor类,但如果可能的话,我希望避免这种情况。。。

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

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

这肯定会起作用,尽管如果你的类型中有很多成员,这可能会很麻烦。除此之外,我看不到太多机会。

查看[HideInInspector],您需要在定义变量的位置应用属性。

Unity3d文档网站中引用的示例(提供的帮助很少…):

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

我想你的意思是,你是否可以在一个派生类中向父(抽象)类隐藏变量,并让它可以从另一个派生类别访问?如果我是对的,那么C#不能使用私有/受保护的继承,因为C#只允许公共继承。