вы не должны создать свой собственный механизм и, если честно, не должны заботиться о разрешении на всех, благодаря видовых и Scene2d Этапы.
Viewport - это своего рода определение того, как обрабатывать экран, когда дело доходит до изменения размера из-за изменения разрешения - если оно должно растягиваться? или, может быть, остаться фиксированным? Существует много видов видовых экранов (и каждый вид - это еще один класс, поэтому вы выбираете вид окна просмотра, создающий объект выбранного класса), и каждый из них имеет свое поведение.
Вы можете прочитать больше о Viewport здесь:
https://github.com/libgdx/libgdx/wiki/Viewports
этап является своего рода презентация абстракции - давайте думать о сцене в театре и актера на нем. Этап - это просто объект-вид обработчика, который вы рисуете в разделе рендеринга. Актеры вы изображения, метки, кнопки и т.д.
Вы можете прочитать больше о сцене здесь:
Все, что вам нужно сделать, это создать сцену, что вы будете добавлять свои актеры (кнопки, изображения, ярлыки ...) и установите для него свой пользовательский видовой экран.
public GameScreen(Main game)
{
super(game);
viewport = new ExtendViewport(this.screenWidth, this.screenHeight); // viewport definition is ExtendViewport viewport; screenWidth and Height are defined width and height of your screen
stage = new MyStage(); //stage definition is Stage stage;
stage.setViewport(this.viewport);
}
@Override
protected void show()
{
...
stage.addActor(someLabel); //someLabel definition is Label someLabel; and it is created somewhere before
...
}
@Override
public void render(float delta)
{
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
this.viewport.update(this.screenWidth, this.screenHeight);
this.stage.act();
this.stage.draw();
}
@Override
public void resize(int width, int height)
{
//you need this function to keep screen size updated
this.screenWidth = width;
this.screenHeight = height;
}
Теперь о вашем размере sprites'es - это не очень хорошо иметь очень очень большие ресурсы, если это будет мобильное приложение - большинство мобильных устройств имеют небольшие разрешения, а так что это не хорошо, чтобы держать большие файлы в вашем app - помните, что он занимает место на диске.
Работа с различными видовыми экранами в основном основана на том, что вы считаете лучшим для своей игры. Полный раздел [раздел в wiki-странице libgdx] (https://github.com/libgdx/libgdx/wiki/Viewports). –
Обычно у вас есть фиксированный размер для вашей игры, а затем изменяйте область просмотра, чтобы размер случайного размера окна увеличивался или уменьшался. –