2017-04-14 1 views
2

저는 단 3 장면 만있는 iOS 용 게임을 아주 쉽게 만들었습니다. 시작 장면, 게임 장면 및 게임 오버 장면. 게임을 실행하고 프로파일 러를 사용하여 성능을 분석 한 결과 "SceneManager.LoadLevelAsync()"함수를 사용하는 장면을 변경할 때 CPU 사용률이 약 90 %라는 것을 알았습니다. 이것은 단지 1 초도 채 안되며, CPU 사용량이 다시 떨어지고 70-80 fps 정도가됩니다. 그러나이 간단한 게임을 사용하면 여러 가지 기능을 더 효율적으로 사용할 수 있을지 궁금합니다. UI "화면"(기본적으로 활성화 및 비활성화 할 수있는 객체 그룹)입니다. 일시 중지 화면에서 수행 한 작업입니다 (오버레이 일뿐입니다).Unity에서 장면을 변경하거나 다른 UI 화면을 사용하는 것이 더 효율적입니까?

물론 이것은 동일한 장면에서 게임을 다시 시작해야 할 필요가있는 것처럼 자체적으로 어려움이있을 수 있지만 내 뮤직 매니저에서 빌드 한 음소거 기능을 실행하는 것과 관련하여 문제가 될 수 있습니다. 시작 장면에서 내 게임 장면에있는 버튼에서 인스턴스화하고, 음악 관리자 또는 점수 관리자 (게임에 표시 할 점수를 저장하는 "DontDestroyOnLoad()"기능을 사용할 필요가 없습니다. 오버 장면). 그러나 너무 많은 비활성화 된 객체를 갖는 것이 비효율적일까요, 아니면 Unity가 이런 식으로 관리하는 것이 좋습니다.

답변

2

개인적으로는 메뉴 시스템이 한 장면에 있어야합니다.

모든 메뉴 화면마다 장면이 다르면 오버 헤드가 발생합니다. 메뉴를 자주 탐색 할 때 사용자 경험에 영향을 미치는 것은 몇 마이크로 초입니다. 이것은 장면의 각 UI gameObject를로드하고 파기하기 때문입니다.

하나의 장면을 기반으로하는 메뉴 시스템은 인스턴스 생성 및 파괴 대신에 게임 객체의 활성화 및 비활성화 만 필요합니다.

메뉴에 대한 하나의 루트 객체를 가질 수 있고 캔버스 구성 요소에 할당 한 다음 각 스크린에 다른 패널을 추가하고 캔버스 그룹을 할당하여 원활하게 켜고 끌 수 있습니다. 이 도움이 https://www.youtube.com/watch?v=DNqTUwnpLvI

희망 :

다음은 메뉴 시스템을 만들기위한 좋은 입문서이다.

+0

굉장한 감사합니다. 내 질문에 답변했습니다. 튜토리얼에 대한 링크를 제공해 주셔서 감사합니다. – jedimaster7

2

정확합니다. 게임/앱이 작 으면 가능한 한 간단하게 유지해야합니다. 장면 간의 유일한 차이는 UI & "게임 중"장면이 그렇게 크지 않다면 확실 할 수 있습니다 동일한 장면을 계속 사용하고 UI를 활성화/비활성화하십시오.

* 비활성 개체는 메모리를 사용합니다.

+0

고마워요! UI가 정말로 미니멀리스트이기 때문에 그 게임을 약간 변경해야합니다. 그래서 그 메모리를 사용해서는 안됩니다. – jedimaster7

관련 문제