2017-04-14 44 views
2

我一直在研究一個非常簡單的iOS遊戲,只有三個場景;開始場景,遊戲場景和場景遊戲。我正在運行遊戲並使用分析器分析性能,並且我注意到當我更改使用「SceneManager.LoadLevelAsync()」函數的場景時,CPU使用率大約爲90%。這只是不到一秒鐘,然後CPU使用率再次下降,我得到70-80 fps左右,但這讓我想知道,如果這樣一個簡單的遊戲對我來說會更有效率,只需要幾個UI「屏幕」(基本上只是一組對象,我可以激活和失活),這是我對我的暫停屏幕(它只是一個覆蓋)。在Unity中更改場景或使用不同的UI屏幕更高效嗎?

當然,這可能會有其自身的困難,就像我不得不在同一場景中重新啓動遊戲一樣,但它可能會幫助我解決運行我在音樂管理器上構建的靜音功能的問題,這是實例在啓動現場,從一個按鈕,是在我的遊戲場景,我就不必使用上的音樂管理器或我的分數經理「DontDestroyOnLoad()」函數(存儲比分上的遊戲要顯示在場景)。但是擁有這麼多失活的對象會是低效的,還是說Unity能夠很好地管理這樣的事情?

回答

2

在我個人的opinon,菜單系統應該是在一個場景。

有對每個菜單屏幕不同的場景會引起開銷。即使是幾微秒,它也會頻繁地在菜單之間導航時影響用戶體驗。這是因爲加載和銷燬場景中的每個UI遊戲對象。

雖然設在一個場景菜單系統只需要激活和gameobjects而不是實例化和破壞的失活。

你可以有一個根對象菜單併爲其分配一個畫布組件,然後你可以爲每個屏幕添加不同的面板,並將它們分配帆布組上落平穩切換他們。

以下是創建菜單系統一個很好的教程:​​

希望這有助於。

+0

真棒謝謝,這回答了我的問題,也感謝鏈接到教程,這太棒了! – jedimaster7

2

你是對的,如果你的遊戲/應用程序很小,你應該保持它儘可能簡單,如果你的場景之間的唯一區別只是你的「在遊戲中」場景不是那麼大,你可以肯定繼續使用相同的場景並使UI激活/停用。

*無效物體做吃內存。

+0

謝謝!我會稍微改變我的遊戲,尤其是因爲UI非常簡約,所以它不應該佔用內存。 – jedimaster7