인프런 커뮤니티 질문&답변

노원신님의 프로필 이미지
노원신

작성한 질문수

유니티(Unity)로 시작하는 게임개발: Part 2. C# 프로그래밍 입문

객체지향의 기본5(여러 클래스를 제작하는 관점)

유니티 콘솔화면에 나타난 내용 문의

해결된 질문

작성

·

287

1

안녕하세요.

클래스와 객체의 개념을 어느 정도? 이해는 하고 있는데요.

오늘 강의의 콘솔 출력창 값에 질문이 있습니다.

먼저 이 앞장 강의에서 만들었던 Player object도 있고 이번 강의에서 만들었던 Enemy1, Enemy2 도 유니티에 존재하는 상황입니다.

콘솔창을 캡쳐해 보면,

위 세가지 모든 오브젝트에 대한 출력값이 나타나는데요.

그런데 출력되는 순서가 Enemy2 -> Enemy1 -> Player -> Enemy Script의 Update함수 안에 있는 발사

이런 순서인데 이게 정상인가요?

아님 다른 이유가 있는지 설명 부탁드립니다.

답변 1

2

UDevApp님의 프로필 이미지
UDevApp
지식공유자

안녕하세요. 정상입니다. 위의 세줄의 경우 Start 에서 실행되는 문장이고요. 

발사의 경우 EnemyScript 에서 실행되는 문장입니다. 

이전장의 "유니티와 함수" 부분에서 "Update 이벤트 함수" 라는 곳에서 나온 게임루프가 동작하는데요.

각각의 객체가 Start 가 있고 Update 가 있습니다. 어떤 것이 먼저 실행될지는  정해져 있지 않지만 Start 가 실행이 먼저 되고 Update 는 그 후에 계속 프레임마다 실행됩니다. 

아래 그림에서 보시면요.

1 이 실행될때 현재 1-1이 실행되고 1-2 이 실행되고 1-3 이 실행됩니다. 자세히 보시면 플레이어가 제일 먼저 그려져 있는데 순서가 플레이어가 먼저 실행되지 않고 적이 먼저 실행됩니다. (그리고 다른 모든 오브벡트의 Start 도 실행됩니다. 어느것이 먼저 실행될지는 유니티가 정합니다. 그런데 이것이 문제가 되지 않습니다. 정 저희가 원하는 경우는 옵션에서 스크립트의 순서를 실행해줄수는 있습니다.  나중의 강의에 나옵니다.)

스타트가 다 실행되고 나면 2번의 업데이트가 실행됩니다. 이때도 실행되는 순서는 유니티가 정합니다. 예를 들어서 첫번째 업데이트의 프레임에서 2-1, 2-2, 2-3 이 실행됩니다. 

계속해서 다음프레임에서 다시 2-1,2-2, 2-3이 또 실행됩니다. 이제 업데이트는 계속 연속적으로 실행됩니다. 

그러므로 저 콘솔의 동작이 맞습니다. 혹시 궁금하시면 적과 플레이어에서 print(Time.timeSinceLevelLoad); 라는 항목을 출력해보셔도 됩니다. 현재 게임이 실행되고 나서의 프레임의 시간입니다. 

그래서 한프레임에서 순서대로 업데이트가 다 출력되고 나서 다음 프레임으로 넘어갑니다. 

콘솔 그림과 비교해보면 다음과 같습니다.

답변이 되었기를 바랍니다. 감사합니다. ^^

노원신님의 프로필 이미지
노원신

작성한 질문수

질문하기