Workspace/Unity3d

SerializeField와 ? 연산자

Bombus 2023. 3. 24. 17:04
UnassignedReferenceException: The variable {variable} of {script} has not been assigned.
You probably need to assign the {variable} variable of the {script} script in the inspector.
 
 

MonoBehaviour에 SerializeField로 정의된 변수에 아무 오브젝트도 설정하지 않은 (None) 상태일 때 해당 변수를 참조하면 발생하게 된다.

 

사실 기본적인 내용이라 보기 어려운 에러인데,

문제는 유니티가 C# 최신버전을 적극적으로 지원하게 되면서 발생했다.

 

[Unity3d C# Compiler 관련 문서]

 

Null 조건 연산자나 Null 병합(결합) 할당 연산자를 유니티에서도 사용할 수 있게 되었다.

 

public class Foo : MonoBehaviour {
  [SerializeFIeld]
  GameObject _MemberFoo;

  public void MethodFoo() {
    // UnassignedReferenceException !
    _MemberFoo?.SetActive(false);  
  }
}
 

코드만 봤을 땐 문제될 게 없어보이지만, UnassignedReferenceException은 할당되지 않은 SerializeFIeld를 접근하기만 해도 발생하는 유니티 시스템 에러이기 때문에 해당 오류가 발생한다.

 

반응형