我有三个班级,班级A
是抽象的,班级B
和C
扩展了它。
当我将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
}
我能想到的唯一另一种方法是为这两个类创建自己的编辑器类,但如果可能的话我想避免这样做......
答案 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#只允许公共继承。