• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

프레임에 대한 질문

21.07.19 19:10 작성 조회수 103

0

실행되는 순서를 따라가다 보니 햇갈리는 부분이 있어 질문드립니다.

UI_Inven 클래스에서 Init()함수부분을 보시면 UI_Inven_Item의 frefab을 생성하고 UI_Inven_Item클래스를 붙여준 후 SetInfo()를 하는 부분이 있는데

저는 처음에 UI_Inven_Item 인스턴스가 되면 Start()가 실행되어 SetInfo()가 씹히고 실행되는 줄 알았는데 도큐먼트를 살펴보니 Start는 첫 번째 프레임이 업데이트 직전에 실행된다고 적혀있어서 위 내용이 한프레임 안으로 일어나서 정상적으로 실행 되구나라고 생각 하려고했는데 혹시나 몰라서 Debug를 찍어보니 UI_Inven의 for문이 모두 돌아서 나온후 UI_Inven_Item의 start가 차례되로 실행 되더라고요. 

그럼.. 한 프레임은 UI_Inven 클래스에서 Init()이 모두 완료되었을 때가 한 프레임 인가요?

저는 프레임이 세미콜론이 끝나는 부분이 프레임이 넘어가는 걸로 생각 하고있어서 저의 생각이 틀린것 같아 바로 잡고싶네요

이번 경험으로 유니티 실행순서에 관해 공부해보게 됬네요

답변 1

답변을 작성해보세요.

0

인스턴스를 만들자마자 Start()가 바로 호출되진 않습니다.
따라서 Init()은 프레임 관리와는 별개라고 생각하셔야 합니다.
(그게 아니라면 Start에서 Init()을 호출하거나..)

프레임의 정확한 개념은, 모든 게임 엔진이 중앙에서
무한 MainLoop Update를 하고 있는데
그것을 한바퀴 돌면 단순히 1프레임이라고 합니다.
정확한 구현은 유니티 엔진을 뜯어봐야겠지만
대략적으로 1프레임을 다 돈 다음에 그 사이에 생성된 애들을 Start 해준 다음,
또 업데이트를 하고 이런 식으로 반복될 것으로 예상할 수 있습니다.
그런데 Init()은 생성 시점에서 호출된 것이라, 프레임 관리 자체와는 무관합니다.

이성현님의 프로필

이성현

질문자

2021.07.19

아하 프레임이 그런 것 이었군요 이해 했습니다 감사합니다

저 생각되로 구현 되는것은 Awake() 함수를 사용시에 그렇게 되더라고요!