본문 바로가기

내배켐 Unity TIL

Unity 16일차 TIL - 오류 해결

기존에 Class에 대한 개념을 잘못 이해하고 있었다.

int i = 0;는 stack에 int i와 0이라는 데이터값이 들어가고 Class Test 일때 Test test1 = new Test();는 new Test()가 힙에 생성이 되고 그 주소값이 Test test1이 있는 스택 공간에 들어가게 된다.

 

그리고 이때 착각했던 것이 그냥 주소값만 가져온다고 생각했던 것이였다.

바로 new Test()라는게 Test 클래스를 새로 만드는 과정이였다. 그래서 앞서 Test1과 Test2 클래스를 생성하고 각각의 클래스에서 서로 다른 클래스를 인스턴스화 시킨 뒤 Program 클래스에서 Test2 클래스를 새로 생성하게 되면 Test2 클래스의 객체를 생성할 때 Test1 클래스를 인스턴스화 시키는 부분이 실행되고, 다시 Test1 클래스에서는 Test2 클래스를 인스턴스화 시키는 부분이 실행되면서 무한 루프에 빠지게 되는 것이였다.

 

그리고 여기서 또 하나 착각했던게 Program 클래스에서 생성된 Test2 클래스의 객체와 Test1에서 생성된 Test2 클래스의 객체는 서로 다르다는 것이였다. 그래서 Program 클래스에서 Test2 클래스 내에 있는 멤버 변수나 함수들을 사용하더라도 그 데이터가 Test1에서 생성된 Test2 클래스의 객체와 같지 않다는 것을 알게되서 기존에 여러 클래스들을 다 사용하는 GameManager 클래스에서 생성된 객체를 가져오는 식으로 코드를 변경했다.

 

추가적으로 Class 내에서도 객체를 만들게 되면 그전에 있던 객체와 내용이 바뀌게 된다.

그래서 클래스 내부에서 지역변수를 사용하고 클래스 내부에 있는 함수를 호출할 때 주의해야 할 것 같다.

 

그래도 어느덧 첫 프로젝트가 막바지에 다다르고 있다. 다른 사람들의 코드를 보고, 얘기를 나누는 것도 꽤나 중요한 부분이었다는 것을 새삼 느끼게 된다. 근데 다들 왜 이렇게 잘하는지 모르겠다 ㅎ..ㅎ