Когда утилизировать экраны в LibGDX?
Вопрос немного смахивает, поскольку я не имею в виду избавление от самого экрана. Я использую оператор enum и switch для переключения экранов, а не классов Screen и Game. Что я действительно спрашиваю, так это то, что, когда я переключаюсь из одного игрового состояния в другое, я должен избавиться от всех своих одноразовых принадлежностей перед рукой? Или я просто сохраняю их все и не беспокоюсь об этом, несмотря на то, что я больше их не рендую, так как я рендую отдельный экран? Я нахожу раздражающим то, что мне приходится распоряжаться всеми ресурсами на моем экране каждый раз, когда я хочу переключиться на другой, поэтому мне интересно, действительно ли это необходимо.
2 ответа
Это ваш выбор и тип вашей игры (у вашей игры много ресурсов).
Если у вас много ресурсов, тогда лучше распорядиться ресурсом одного экрана, затем загрузить ресурс другого экрана в память и после этого использовать этот ресурс.
В этом сценарии покажите экран загрузки и загрузите ресурс асинхронно.
Если у вас нет большого количества ресурсов, распоряжайтесь ими только при выходе из игры. Унаследованные игры dispose()
Лучшее место для размещения вашего игрового ресурса в этом сценарии и удаления экрана вызова здесь. так что экран конкретного ресурса можно утилизировать.
Быстрые правила могут быть:
Если вы загружаете что-то (Texture, TextureAtlas, Music, Sound и т. Д.) При запуске приложения, и у вас нет проблем с кучей памяти - утилизируйте это в методе удаления приложения.
Но если вы загружаете что-то особенное для вашего экрана при запуске экрана, вы должны утилизировать его в методе удаления экрана.
Если вы не располагаете ресурсом для экс. Текстура останется в памяти, даже если вы ее не визуализируете. Когда вы загружаете какую-либо текстуру внутри экрана, не удаляя ее изнутри, вы можете вызвать утечку памяти, потому что вы загружаете ту же текстуру во второй раз, когда вы снова запускаете экран.