Когда утилизировать экраны в LibGDX?

Вопрос немного смахивает, поскольку я не имею в виду избавление от самого экрана. Я использую оператор enum и switch для переключения экранов, а не классов Screen и Game. Что я действительно спрашиваю, так это то, что, когда я переключаюсь из одного игрового состояния в другое, я должен избавиться от всех своих одноразовых принадлежностей перед рукой? Или я просто сохраняю их все и не беспокоюсь об этом, несмотря на то, что я больше их не рендую, так как я рендую отдельный экран? Я нахожу раздражающим то, что мне приходится распоряжаться всеми ресурсами на моем экране каждый раз, когда я хочу переключиться на другой, поэтому мне интересно, действительно ли это необходимо.

2 ответа

Это ваш выбор и тип вашей игры (у вашей игры много ресурсов).

Если у вас много ресурсов, тогда лучше распорядиться ресурсом одного экрана, затем загрузить ресурс другого экрана в память и после этого использовать этот ресурс.

В этом сценарии покажите экран загрузки и загрузите ресурс асинхронно.

Если у вас нет большого количества ресурсов, распоряжайтесь ими только при выходе из игры. Унаследованные игры dispose() Лучшее место для размещения вашего игрового ресурса в этом сценарии и удаления экрана вызова здесь. так что экран конкретного ресурса можно утилизировать.

Быстрые правила могут быть:

Если вы загружаете что-то (Texture, TextureAtlas, Music, Sound и т. Д.) При запуске приложения, и у вас нет проблем с кучей памяти - утилизируйте это в методе удаления приложения.

Но если вы загружаете что-то особенное для вашего экрана при запуске экрана, вы должны утилизировать его в методе удаления экрана.

Если вы не располагаете ресурсом для экс. Текстура останется в памяти, даже если вы ее не визуализируете. Когда вы загружаете какую-либо текстуру внутри экрана, не удаляя ее изнутри, вы можете вызвать утечку памяти, потому что вы загружаете ту же текстуру во второй раз, когда вы снова запускаете экран.

Другие вопросы по тегам