유니티 Inspector창 변수 표출이 안됩니다.

유니티 Inspector창 변수 표출이 안됩니다.

작성일 2024.02.03댓글 1건
    게시물 수정 , 삭제는 로그인 필요

유니티로 현재 개발을 하고 있는 입문자입니다.
하나의 스크립트에 여러 클래스를 만들고, 한 클래스가 다른 한 클래스를 상속하고 있는 형태입니다.
ex)
public class class1 {...}
public class class2 : class1 {...}

대충 이렇게 되어 있는데, 이 스크립트를 유니티의 한 오브젝트에 적용하고, Inspector 창에서 다른 오브젝트들을 객체에 적용하려고 하는데, class1의 객체들은 Inspector에 표출이 되지만 class2에서 새로 선언한 객체들은 Inspector에 표출이 되지 않습니다. [SerializeField]나 [System.Serializable]을 사용해도 표출이 안되는데, 혹시 새롭게 선언한 객체들까지 표출할 수 있는 방법이 따로 있을까요?



profile_image 익명 작성일 -

안녕하세요~ 게임의 모든 것입니다~!!!

질문 주신 내용에 대한 답변입니다~~!!!!

Unity에서 Inspector 창에 표출되는 변수는 해당 클래스의 멤버 변수 중에서 직렬화 가능한 것들만 표시되는데,

따라서 class2에 새로 선언한 객체들이 표출되지 않는 이유가 여러가지라서 나열해서 보여드리겠습니다~~!

  1. 접근 제어자 문제

  • class1에서 선언한 변수들이 private이거나 protected일 경우, 해당 변수들은 하위 클래스에서

  • 직접 접근이 불가능하므로 Inspector 창에서 표출되지 않습니다. protected 또는 public으로 설정해야 합니다.

  1. 직렬화 가능 여부

  • Unity에서 Inspector 창에 표출되려면 해당 변수들은 직렬화 가능해야 합니다.

  • Unity에서는 public 또는 [SerializeField]로 표시된 변수들을 직렬화하여 Inspector 창에 표출합니다.

  • class2에서 선언한 새로운 객체들도 public으로 선언되었는지 확인하세요.

  1. Unity에서 지원하지 않는 데이터 형식

  • Inspector 창에 표출되는 변수는 Unity에서 지원하는 데이터 형식이어야 합니다.

  • 만약 새로운 객체가 Unity에서 지원하지 않는 형식이라면 표출되지 않을 수 있습니다.

  1. 유니티 문법 준수

  • 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 게임 입시 / 취업 / 진로 상담 무료 진행

↓↓↓↓↓↓

https://open.kakao.com/o/sUz7t25f