我正在尝试创建自定义编辑器统一脚本。
我需要访问我通过属性公开的私有变量。
但是,使用编辑器脚本无法访问该属性。
我正在尝试访问自定义编辑器中的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中访问公共财产?
答案 0 :(得分:2)
您需要一个实例来访问非静态MyObjects
属性。可以通过自定义编辑器中的target
field找到该实例。字段target
的类型为UnityEngine.Object
,但它指向MonoBehaviour
类型的对象,其类是自定义编辑器(CustomEditor
中的参数属性),因此可以铸造它。
答案 1 :(得分:0)
只需将 MySpecialClassEditor 中的行替换为
private bool[] showMyObjectSlots = new bool[(MySpecialClass)target.MyObjects.Length];