null 4

이벤트 사용에 있어 주의 점

이벤트는 매우 편리하다 이벤트 발생 시에 구독되어있는 함수들을 한 번에 수행할 수 있기 때문이다. 하지만 동시에 주의해야할 점들이 있다. 먼저 Monobehaviour를 상속받아 오브젝트에 부착될 스크립트일 경우  구독해제에 대해 신경을 써줘야한다. 구독해제를 안한 것이 어떨 때 문제가 되냐면 오브젝트가 구독해제를 안한 상태로 파괴가 됐는데 이벤트 호출을 하면 Null 오류가 뜨게 된다.  또 하나 알아둬야할 것은 람다식의 경우 이벤트 구독 해제가 안된다.  이벤트로 람다식을 구독시키는 것은 매우 편리한 것을 알지만 구독해제가 안되니 되도록 사용하지 않거나 굳이 써야한다면 Monobehaviour를 상속받지 않는 클래스에서 사용하는 것이 좋아보인다. 이번 프로젝트에선 전역으로 사용할 수 있는 이벤트 매니..

유니티 2024.08.19

유니티 - ArgumentNullException: Value cannot be null 해결법

분명 로직은 맞는데 이와 같은 에러가 뜨고 있다. private로 선언한 rcode에 null 값이 들어가고 있었다. 프로퍼티를 뒀음에도 null값이 들어가는 것이 이상했고 계속 로직이 정말 맞다고 생각해 시간을 낭비했으나 사실은 로직 문제가 맞았다. 오브젝트 타입의 인스턴스를 하나 만든건데 문제는 dt에서는 private 변수들이 접근이 안된다.고로 dt.SetValue로 rcode 변수에 값을 넣어줄 수가 없는 것이다. 고로 null이 될 수밖에 없는것

유니티 2024.07.19

유니티 - Queue의 NullReferenceException

지옥 같은 NullReferenceException 이다. 이전에도 이것 때문에 글을 작성했는데 다시 작성을 하게 됐다. 만일 리스트와 큐를 선언한다하자 public으로 선언하면 알다시피  인스팩터 창에서 넣어줄 수가 있어 별도의 초기화를 하지 않아도 된다. 이렇게  인스팩터창에서 리스트에 값을 넣어주고 아래와 같이 리스트의 값들을 큐에 넣어주는 작업을 해보자 void Start(){ for(int i = 0; i ()); }} 리스트는 GameObject라 Card 컴포넌트를 가져와 Card 타입의 큐에 넣어주고 있는 모습이다.이렇게 하면 리스트에 있는 Card 데이터를 다 큐에 담아준 것으로 보인다. 하지만 이렇게 하면 NullReferenceException를 마주하게 된다... 대체 뭘..

유니티 2024.06.23

Unassigned/Null Reference Exception 해결법

오늘 공부를 하면서 정말 Unassigned와 Null 관련 오류로 많은 곤혹을 치룬 하루였다. Unassigned Reference Exception 먼저 Unassigned의 사례를 보자 UIInventory 스크립트의 inventoryWindow 변수에 값이 할당되지 않았다고 한다. 고로 인스팩터 창에서 할당해주라는 메세지이다.그러면 할당을 해주면 그만인데... 문제는 인스팩터 창에서 분명히 게임 오브젝트를 넣어줬다는 사실이다. 그러면 대체 왜 이런 에러가 발생한걸까? 그 이유는 황당하게도...  전혀 UI와 상관없는 나무 게임오브젝트에 UI Inventory가 부착되어있던 것이다...실수로 스크립트를 추가한 것으로 보인다..  만일 이와 같은 실수를 한 거로 의심될 때 많은 게임오브젝트가 있을 때..

유니티 2024.05.29