【问题标题】:Exposing a Private Variable using a Property to a Custom Editor使用属性向自定义编辑器公开私有变量
【发布时间】:2017-12-30 05:20:22
【问题描述】:

我正在尝试创建自定义编辑器统一脚本。

我需要访问我通过属性公开的私有变量。

但是,无法使用编辑器脚本访问该属性。

我正在尝试在自定义编辑器中访问 MyObjects 属性。

我的班级

public class MySpecialClass : MonoBehaviour {

    [SerializeField]
    private GameObject[] myObjects;
    public GameObject[] MyObjects {
        get {
            return myObjects;
        }

        set {
            myObjects = value;
        }
    }
}

我的自定义编辑器脚本

using UnityEditor;
[CustomEditor(typeof(MySpecialClass))]
public class MySpecialClassEditor : Editor {

    private bool[] showMyObjectSlots = new bool[MySpecialClass.MyObjects.Length]; 
}

为什么不能在 CustomEditor 中访问公共属性?

【问题讨论】:

  • 我正在尝试在自定义编辑器中访问MyObjects 属性。
  • 您正试图在静态上下文中访问 MyObjects 但 MyObjects 不是静态的

标签: c# unity3d unity5


【解决方案1】:

您需要一个实例来访问非静态 MyObjects 属性。可以通过自定义编辑器中的target field 找到该实例。字段target 的类型为UnityEngine.Object,但它指向一个类型为MonoBehaviour 的对象,该类是自定义编辑器(CustomEditor 属性中的参数),因此可以强制转换给它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 2014-05-21
    相关资源
    最近更新 更多