2017-12-30 43 views
0

사용자 지정 편집기 단일 스크립트를 만들려고합니다.사용자 지정 편집기에 속성을 사용하여 개인 변수 노출

속성을 통해 공개 된 개인 변수에 액세스해야합니다.

그러나 편집기 스크립트를 사용하여 속성에 액세스 할 수 없습니다.

사용자 정의 편집기에서 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

사용자 정의 편집기의 MyObjects 속성에 액세스하려고합니다. –

+3

정적 컨텍스트에서 MyObject에 액세스하려고하지만 MyObjects가 정적이 아닙니다. –

답변

2

정적이 아닌 MyObjects 속성에 액세스하려면 인스턴스가 필요합니다. 인스턴스는 사용자 정의 편집기의 target field을 통해 찾을 수 있습니다. 필드 target은 유형이 UnityEngine.Object이지만 클래스가 사용자 정의 편집기 (CustomEditor 속성의 인수) 인 MonoBehaviour 유형의 객체를 가리 키므로 해당 객체에 캐스팅 될 수 있습니다.