본문 바로가기
게임 개발 일지/내일배움캠프 TIL

[Unity] 같은 scene 에서 오브젝트 간 생성 순서 정하기

by 빛하_ 2024. 1. 25.

 

최종 프로젝트 문제해결 일지 #1

 

 

문제 1. 유니티 엔진 - Inspector 창에 text가 들어가지 않는 현상

최근 버전의 유니티는 TextMeshPro 사용을 권장하고 있다. 

예전에 UI에서 많이 사용한 일반적인 Text 클래스는 사용에 제약이 있다.

따라서 name space에 using TMPro; 를 사용한 뒤

public TextMeshProUGUI 로 변수를 선언하면 Inspector에서 불러올 수 있다. 

 

 

문제 2. 같은 scene의 Heirarchy에서 특정 오브젝트를 더 늦게 호출시키는 방법

 

문제상황) SelectScene에서 넘어온 캐릭터 정보 중 stat 3가지를 gamescene에서 canvas 로 띄우는데, 값이 0으로 출력됨.

시도) 스탯에 연결된 스크립트인 spawnedcharacterstats.cs 와 관련 있는 클래스를 모두 찾아서 연결 방식을 다양하게 수정했지만, null이 발생하거나 값이 0으로 출력됨.

 

 

 

 

 

해결) 출력 순서의 문제가 있다고 판단해서 gamescene을 먼저 로드하고 ui가 나중에 올 수 있도록 조치함.

(ui가 먼저 출력되는 경우 아직 캐릭터가 넘어오지 않은 상태에서 값이 들어가기 때문에 0이 나오게 된다.)

GameScene 내의 game scene 오브젝트와 UI 가 같은 hierarchy 상에 위치함

⇒ 시스템 상 어떤 게 먼저 출력될 지 불분명함

따라서 UI를 프리팹화 한 뒤, 게임씬을 먼저 로드하고 나중에 프리팹을 꺼내기로 함

gamescene.cs에서 프리팹화 한 UI를 instantiate 하면 UI를 나중 순서로 불러올 수 있음.

  (Main.ResourceManager.Instantiate("UI_Prefabs/GameSceneUI");

따라서 로드 순서를 gamescene 오브젝트 ⇒ UI 순으로 확정시킬 수 있음.

 

scene 전환 => gamescene 오브젝트 생성 => 프리팹화한 UI를 Instantiate 해주는 방법!

 

 

 

댓글