• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

코드에서 new GameObject를 실행했을 때 유니티 화면상의 상태 문의

21.04.08 18:58 작성 조회수 327

2

강의와 같이 VisualStudio에서 

GameObject obj1 = new GameObject();

를 Start함수에 입력하고 유니티에서 플레이 버튼을 누르면,

좌측 상단에 New Game Object가 나타납니다.

그런데 플레이 버튼을 한번 더 누르면 New Game Object가 사라집니다.

이것은 TestScript의 class가 해제되었기 때문에 메모리에서 사라지는 것인가요?

답변 1

답변을 작성해보세요.

1

실행을 하면 계층뷰에 있던 내용이 메모리에 올라가게 됩니다. 

그런데 게임오브젝트 안에 붙어 있던 TestScript 에서 실제 new GameObject() 를 실행하기에 

계층뷰에 게임오브젝트가 하나 생기게 됩니다. 

그리고 나서 이후에 플레이를 다시 눌러 게임을 종료하면 원래 상태로 돌아오는데 이것은 현재 프로그램이 실행되기 전의 상태로 돌아오는 것입니다. 

TestScript 의 클래스가 해제되었기 때문에 new GameObject 로 만들었던 오브젝트가 사라진 것처럼 보일수도 있습니다만 사실 처음의 작업하던 화면으로 돌아오는 것이죠.

유니티에서 작업하는 화면은 게임이 실행되기 전의 (게임이 시작할때의 )메모리 상태를 의미합니다. 실행을 하면 그러한 메모리 상태가 되는 것이고요.

이제 플레이를 눌러 실행을 한다면 스타트가 실행되어서 메모리에 새 빈게임오브젝트가 생기고요.

물론 종료를 하기 직전에 메모리들이 사라지겠죠.  모든 메모리들이 사라지는 것입니다.

그리고 화면에 보이는 것은 게임을 편집하고 있는 화면으로 돌아가는 것입니다.  어느 순간에는 메모리의 상태를 보였다가 어느 순간에는 게임의 편집화면을 보이고 있는 것입니다. 메모리는 내부적인 동작입니다.

실행하고 있는 상태의 메모리가 계층뷰에 보이는 것입니다.

눈에 보이는 건 그렇지만 실제 내부적인 동작은 그렇습니다. 

현재 정지상태의 유니티의 씬뷰가 게임 시작전의 편집화면이고 실행시작 순간부터 그렇게 시작되어 실행되기 때문입니다. 

위의 그림과 같습니다. 답변이 되기를 바랍니다 수고하세요 ^^

노원신님의 프로필

노원신

질문자

2021.04.10

자세한 설명 고맙습니다만, 솔직히 무슨 말인지 모르겠어요 ㅠㅠ

아닙니다. 설명이 조금 부족한가 봅니다. 전화드리겠습니다.