Я новичок в java и libgdx, и я хочу создать экран главного меню. Может ли кто-нибудь дать мне простой пример?Как создать экран главного меню libgdx
ответ
Что вы просите очень широк, оно включает в себя множество элементов, таких как создание кнопок, скинов, настройка таблиц и т. Д. В любом случае вы должны использовать Экраны для этого, добавить сцену и добавить актеров на сцену. В конце концов вам нужно добавить слушателей к вашим участникам кнопок, чтобы переключать экраны. Вот один, который я сделал для вас:
public class TestScreen implements Screen{
private SpriteBatch batch;
protected Stage stage;
private Viewport viewport;
private OrthographicCamera camera;
private TextureAtlas atlas;
protected Skin skin;
public TestScreen()
{
atlas = new TextureAtlas("skin.atlas");
skin = new Skin(Gdx.files.internal("skin.json"), atlas);
batch = new SpriteBatch();
camera = new OrthographicCamera();
viewport = new FitViewport(Constants.WorldWidth, Constants.WorldHeight, camera);
viewport.apply();
camera.position.set(camera.viewportWidth/2, camera.viewportHeight/2, 0);
camera.update();
stage = new Stage(viewport, batch);
}
@Override
public void show() {
//Stage should controll input:
Gdx.input.setInputProcessor(stage);
//Create Table
Table mainTable = new Table();
//Set table to fill stage
mainTable.setFillParent(true);
//Set alignment of contents in the table.
mainTable.top();
//Create buttons
TextButton playButton = new TextButton("Play", skin);
TextButton optionsButton = new TextButton("Options", skin);
TextButton exitButton = new TextButton("Exit", skin);
//Add listeners to buttons
playButton.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
((Game)Gdx.app.getApplicationListener()).setScreen(new PlayScreen());
}
});
exitButton.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
Gdx.app.exit();
}
});
//Add buttons to table
mainTable.add(playButton);
mainTable.row();
mainTable.add(optionsButton);
mainTable.row();
mainTable.add(exitButton);
//Add table to stage
stage.addActor(mainTable);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(.1f, .12f, .16f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
@Override
public void resize(int width, int height) {
viewport.update(width, height);
camera.position.set(camera.viewportWidth/2, camera.viewportHeight/2, 0);
camera.update();
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
skin.dispose();
atlas.dispose();
}
}
Как я это называю, немного изменив начальный класс.
//Let the class extend from game
public class MyGame extends Game()
{
//Delete everything in it and leave a create() with a single line
@Override
public void create() {
setScreen(new MenuScreen());
}
}
Конечно, чтобы вышеприведенный код будет работать вам нужно настроить Skin
и Atlas
для рисования кнопок. Однако вы можете просто добавить изображение и шрифт и создать свои кнопки вручную. Во всяком случае, я просто answered a question, где я углубляюсь в создание Skin
и Atlas
.
Редактировать Хотя был задан пример класса меню, пользователю просто нужно было узнать, как переключиться с экрана на экран. Немного неудобно, но, к счастью, написав вышеприведенный код, потребовалось всего пару минут;).
Вы всегда можете получить доступ к ApplicationListener
откуда угодно, используя Gdx.app.getApplicationListener
. Вы можете отдать это Game
для доступа к setScreen
.
((Game)Gdx.app.getApplicationListener()).setScreen(new GameScreen());
Или вы можете пройти по первому игровому объекту или в списке приложений вручную. Убедитесь, что новый экран принимает игровой объект.
public class MenuScreen
{
private Game gameObject;
public MenuScreen(Game gameObject)
{
this.gameObject = gameObject;
}
private void someMethod()
{
//Switches to a new MenuScreen...
//useless in most cases but you get the idea
gameObject.setScreen(new MenuScreen(gameObject);
}
}
Спасибо, если вам пришлось написать весь код, но что Я имел в виду, как использовать несколько экранов и экран переключения, из моего понимания, когда вы нажимаете кнопку setScreen (myOtherScreen()); но что нового Playscreen() ?? Вы не можете просто назвать класс другого экрана? –
@StormAsdg Тогда в следующий раз будьте более конкретными;). 'setScreen' принадлежит к объекту Game, так что либо вы должны называть его из сохраненного applicationListener, либо передавать исходный объект« Game »allong. Вы делаете '((Game) Gdx.app.getApplicationListener()). SetScreen (nextScreen);' Или вы можете передать исходный игровой объект allong и сделать 'gameObject.setScreen'. – Madmenyo
Имейте в виду, что мы используем 'setScreen (новый GameScreen()):' каждый раз создаете новый экран, и если вы не загружаете текущее состояние, он будет сброшен до значения по умолчанию. Это не проблема, если вы загружаете состояние на самом экране. Как и значения слайдера для музыки и звука на экране параметров. Но вам нужно использовать AssetManager для ваших активов, иначе все будет замедляться довольно быстро. – Madmenyo
- 1. LIBGDX создание главного меню
- 2. Фон LIBGDX для главного меню отображается белым
- 3. Прокрутка главного экрана в LibGdx
- 4. Как создать экран главного экрана iPhone с 2 вкладками subview?
- 5. LIBGDX создает актеров и сцену для главного меню
- 6. создание главного меню меню
- 7. LibGDX - Как очистить экран
- 8. Использование GroupedItemsPage как главного меню
- 9. Разрушение главного меню игры?
- 10. Переход на слайд-экран Libgdx
- 11. Экран загрузки Libgdx Assetmanager
- 12. Libgdx | Как создать миникарту?
- 13. Асинхронный загрузочный экран Libgdx
- 14. libgdx: как скрыть экран запуска
- 15. Положение главного меню Joomla
- 16. Настройка главного меню joomla
- 17. Libgdx тусклый экран с glClearColor
- 18. как открыть действия из экрана главного меню
- 19. Позиционирование проблемы главного меню
- 20. Libgdx Android делящий экран
- 21. Libgdx - не реализует экран
- 22. Как создать функцию главного меню, в которой есть инструкция goto?
- 23. LibGDX Экран загрузки не работает
- 24. Лучшие проекты главного меню
- 25. Модуль главного меню Prestashop
- 26. Настройка главного меню ECSlidingViewController
- 27. Как создать многостраничный экран с помощью libgdx scene2d?
- 28. Libgdx: экран managaer
- 29. Пользователь libgdx отключает экран
- 30. Libgdx - gdx.video пустой экран
Как libgdx чаще всего используется для программирования игр, вы можете получить больше ответов, переместив этот вопрос на «Обмен играми». –
Читайте о [Scene2d] (https://github.com/libgdx/libgdx/wiki/Scene2d) и [Scene2d skins] (http://www.gamefromscratch.com/post/2013/12/18/LibGDX-Tutorial -9-Scene2D-Part-3-UI-Skins.aspx) и вернуться с вопросами - хотя я уверен, что вы сможете создать меню после лекции –