유니티 Inspector창 변수 표출이 안됩니다.
-
게시물 수정 , 삭제는 로그인 필요
유니티 Inspector창 변수 표출이 안됩니다.
안녕하세요~ 게임의 모든 것입니다~!!!
질문 주신 내용에 대한 답변입니다~~!!!!
Unity에서 Inspector 창에 표출되는 변수는 해당 클래스의 멤버 변수 중에서 직렬화 가능한 것들만 표시되는데,
따라서 class2에 새로 선언한 객체들이 표출되지 않는 이유가 여러가지라서 나열해서 보여드리겠습니다~~!
접근 제어자 문제
class1에서 선언한 변수들이 private이거나 protected일 경우, 해당 변수들은 하위 클래스에서
직접 접근이 불가능하므로 Inspector 창에서 표출되지 않습니다. protected 또는 public으로 설정해야 합니다.
직렬화 가능 여부
Unity에서 Inspector 창에 표출되려면 해당 변수들은 직렬화 가능해야 합니다.
Unity에서는 public 또는 [SerializeField]로 표시된 변수들을 직렬화하여 Inspector 창에 표출합니다.
class2에서 선언한 새로운 객체들도 public으로 선언되었는지 확인하세요.
Unity에서 지원하지 않는 데이터 형식
Inspector 창에 표출되는 변수는 Unity에서 지원하는 데이터 형식이어야 합니다.
만약 새로운 객체가 Unity에서 지원하지 않는 형식이라면 표출되지 않을 수 있습니다.
유니티 문법 준수
Unity의 직렬화 시스템은 C#의 일부 문법을 지원하지 않을 수 있습니다.
예를 들어, Dictionary와 같은 특정 컬렉션은 Unity에서 직렬화하기 어려울 수 있습니다.
다음은 class2의 예제 코드입니다. 이 코드에서 objectInClass2 변수는
[SerializeField] 어트리뷰트를 사용하여 Inspector 창에 노출되도록 표시되어야 합니다.
public class class1 : MonoBehaviour
{
[SerializeField]
protected int variableInClass1;
}
public class class2 : class1
{
[SerializeField]
private int variableInClass2;
[SerializeField]
private GameObject objectInClass2;
}
위의 코드에서 [SerializeField] 어트리뷰트를 사용하여 변수를 직렬화하고 Inspector 창에
노출하도록 했습니다. 만약 이 방법으로도 해결되지 않는다면,
문제가 되는 코드 일부를 더 자세히 확인하거나, 여러 클래스 간의 상속 및 직렬화가
올바르게 이루어지고 있는지 확인해보시면 좋을 듯 합니다~!!!!
1:1 게임 입시 / 취업 / 진로 상담 무료 진행
↓↓↓↓↓↓
유니티로 현재 개발을 하고 있는 입문자입니다. 하나의 스크립트에 여러... Unity에서 Inspector 창에 표출되는 변수는 해당 클래스의 멤버 변수 중에서...
유니티로 게임을 만들고 있습니다. [code] using... 작동이 안됩니다. 이 사진을 보시면 CountStop... 옆에 Inspector창을 보시면 여전히 stop 변수가...
... 버튼부분이 실행이 안됩니다. 아래는 스크립트 부분입니다.... // [SerializeField] 을 달면 유니티 inspector 창에서 해당 변수를 조작 할 수 있다. static...