Поиск…


Версии

Версия Дата выхода
1.9.3 2016-05-16
1.9.5 2016-12-11

Установка или настройка

LibGDX имеет довольно простую настройку с помощью простой Java-программы. Вы можете скачать здесь . Когда вы запускаете приложение, оно будет выглядеть примерно так: Пример генератора проекта LibGDX
Примечание. Этот снимок экрана был сделан в Linux и показывает путь, который отличается от установки Windows. Однако форма одинакова на любой ОС, совместимой с этим приложением настройки

Ящики ввода

В поле ввода «Имя» указано название игры для вашего проекта. Поле ввода «Пакет» - это пакет для вашего основного класса. Поле ввода «Класс игры» - это основной класс, который вызывается при запуске вашей игры. Поле ввода «Место назначения» - это место назначения, в котором будет создан ваш проект. В поле ввода «Andriod SDK» указан путь к вашему Android-файлу. Это поле ввода полностью необязательно, поэтому, если вы не хотите развернуть приложение на Android, вам не нужно беспокоиться об этом.


Подпроекты

Субпроекты - это только платформы, на которые нужно будет развертывать. Эта часть довольно понятна. Если вы не хотите развернуть его в HTML, просто снимите флажок.


расширения

Расширения являются официальными расширениями LibGDX. Вот таблица, рассказывающая вам, что каждый из них:

Имя расширения Описание
пуля Bullet представляет собой трехмерную систему обнаружения столкновений и динамическую библиотеку динамических тел.
Freetype Freetype позволяет использовать шрифты .ttf, вместо того, чтобы использовать шрифты Bitmap
инструменты Позволяет реализовать вывод средств LibGDX.
Контроллеры Позволяет реализовать контроллеры, такие как контроллеры XBox 360.
Box2D Физическая библиотека для 2-х игр.
Box2dlights Позволяет легко добавлять мягкие динамические огни в физическую игру.
Ashley Крошечная структура сущности
искусственный интеллект Структура искусственного интеллекта.

Вы можете добавить сторонние расширения, но их данные или имена здесь не отображаются.


продвинутый

В разделе «Дополнительно» вы можете установить несколько параметров и создать дополнительные файлы проектов для Eclipse и IDEA IDE.

Имя параметра Описание
URL-адрес зеркала Maven Заменяет Maven Central на предоставленный URL Maven
IDEA Создает файлы проекта Intellij IDEA
Затмение Создает файлы проекта Eclipse
Автономный режим Не заставляйте загружать зависимости

поколение

После правильной настройки всех ваших настроек вы можете нажать кнопку «Создать». Это может занять пару секунд, но оно будет генерировать основные файлы, а Gradle - для вашего проекта. Как только вы закончите с этим, пришло время импортировать проект в вашу среду IDE.

LibGDX Hello World

основы

Сгенерированные проекты содержат базовое приложение Hello World, подобное уже реализованное.

Основной проект - это основной проект, содержащий весь независимый от платформы код. Это обязательно, но на основе настроек вашего поколения у вас может быть несколько проектов для каждой выбранной вами платформы.

Пример

Откройте com.mygdx.game.MyGdxGame.java в core проекте. Вы увидите следующий код:

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    
    @Override
    public void create () {
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(img, 0, 0);
        batch.end();
    }
    
    @Override
    public void dispose () {
        batch.dispose();
        img.dispose();
    }
} 

Хотя это ваш основной проект, вы не будете его выполнять напрямую, вам всегда нужно запустить платформенный Launcher, для рабочего стола он называется com.mygdx.game.desktop.DesktopLauncher.java в проекте desktop .

public class DesktopLauncher {
    public static void main (String[] arg) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        new LwjglApplication(new MyGdxGame(), config);
    }
} 

В этом классе вы можете установить настройки для конкретной платформы.


Запуск игры

Eclipse и Intellij используют два разных метода для запуска вашего проекта. Найдите IDE, используя ниже.

Запуск с использованием Eclipse

Используя eclipse, вы можете запустить приложение, запустив этот класс как Java-приложение (щелкните правой кнопкой мыши по проекту -> Запустить как -> Java-приложение). Вы увидите следующее окно:

Запуск Hello world на рабочем столе

Работа с использованием Intellij Idea

В Intellij вам нужно будет выполнить конфигурацию запуска. Чтобы сделать это, вы должны нажать кнопку в правом верхнем углу, которая выглядит как морковка вниз:

Морковь

Затем нажмите кнопку «Изменить конфигурации ...». Вам будет представлен экран всех ваших текущих конфигураций запуска. Нажмите «+» в левом верхнем углу окна и выберите «Приложение». Оттуда выберите файл «DesktopLauncher» для опции «Основной класс», установите параметр «Использовать путь к модулю» к основному параметру и установите «Рабочий каталог» в папку «Свойства» в вашей основной папке. Конечный продукт должен выглядеть примерно так:

Запустить пример конфигурации

Как только вы это сделаете, вы можете выбрать имя для своей конфигурации запуска и нажать «Применить», затем «ОК». Как только вы закончите с этим, вы можете щелкнуть значок зеленого запуска в правом верхнем углу:

Значок запуска

Что происходит в классе MyGdxGame?

Сначала вызывается метод create , который инициализирует пакет, который рисует на экране. Затем метод загружает badlogic.jpg в память.

После этого метод render вызывается повторно до тех пор, пока приложение не будет остановлено. Этот метод сбрасывает цвет фона на красный и рисует изображение на экране. Как вы можете видеть, вам всегда нужно начинать и заканчивать пакетный чертеж. Наконец , когда приложение пытается остановить dispose метод вызывается, что освободит место в памяти , используемой текстуры и партии.

(Хорошо знать, что утилизация может произойти и во время работы на других платформах, например Android, поскольку Android может освобождать пространство памяти, когда приложения находятся в фоновом режиме, но это более сложная тема)



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

Файл не найден: badlogic.jpg (Внутренний)

Общий обзор LibGDX

LibGDX - бесплатная библиотека разработки игр с открытым исходным кодом, разработанная на Java. Цели - позволить пользователям разрабатывать кросс-платформенные игры, которые запускаются на настольных компьютерах, Android, iOS и веб-браузерах. Напишите код один раз, разверните его на любой из основных платформ.

Добавление поддержки для кода, специфичного для платформы

LibGDX разработан таким образом, что вы можете написать один и тот же код и развернуть его на нескольких разных платформах. Тем не менее, есть моменты, когда вы хотите получить доступ к конкретному коду платформы. Например, если у вас есть рейтинги и достижения в вашей игре, вы можете использовать инструменты для платформы (например, Google Play Games) в дополнение к их локальному хранению. Или вы хотите использовать базу данных или что-то совершенно другое.

Вы не можете добавить этот код в основной модуль. Итак, первый шаг - создать интерфейс. Создайте его в основном модуле. Это первая утилита для управления другими интерфейсами:

public interface PlatformWrapper{
    //here you can also add other things you need that are platform specific.
    //If you want to create your own file saver for an instance, a JSON based database,
    //achievements, leaderboards, in app purchases and anything else you need platform specific code for.
    SQLWrapper getSQLSaver();//This one will be used in this example
    AchievementWrapper getAchievementHandler();//this line is here as an example
}

Затем нам нужно создать второй интерфейс - SQLWrapper. Это также входит в основной модуль.

public interface SQLWrapper{
    void init(String DATABASE);
    void saveSerializable(int id, Object o);
    Object loadSerializable(int id, Object o);
    void saveString(int id, String s);
    //.... and other methods you need here. This is something that varies
    //with usage. You may not need the serializable methods, but really need a custom method for saving 
    //an entire game world. This part is entirely up to you to find what methods you need
   
    //With these three methods, always assume it is the active database in question. Unless 
    //otherwise specified, it most likely is
    String getActiveDatabase();
    void deleteDatabase();
    void deleteTable(String table);//delete the active table
}

Теперь вам нужно войти в каждый проект и создать класс для реализации PlatformWrapper и один для реализации SQLWrapper. В каждом проекте вы добавляете необходимый код, например экземпляры, конструкторы и т. Д.

После того, как вы переопределили все интерфейсы, которые вы сделали, убедитесь, что у всех у них есть экземпляр класса, который реализует PlatformWrapper (и что есть геттер). Наконец, вы меняете конструктор в основном классе. Основной класс - это класс, который вы ссылаетесь на пусковую установку. Он либо расширяет ApplicationAdapter, реализует ApplicationListener, либо расширяет Game. Отредактируйте конструктор и добавьте PlatformWrapper в качестве аргумента. Внутри оболочки платформы у вас есть некоторые утилиты (если вы добавили их) в дополнение ко всем другим оберткам (sql, достижениям или другим добавленным вами).

Теперь, если все правильно настроено, вы можете позвонить в PlatformWrapper и получить любой из кросс-платформенных интерфейсов. Вызовите любой метод и (при условии, что выполненный код верен), который вы увидите на любой платформе, он делает то, что он должен делать с конкретным кодом платформы

Менеджер активов

AssetManager - это класс, который помогает вам управлять своими активами.

Во-первых, вам нужно создать экземпляр:

AssetManager am = new AssetManager();

После того, как это будет инициализировано, и перед тем, как что-либо сделать, вы хотите получить ресурсы:

am.load("badlogic.jpg", Texture.class);//Texture.class is the class this asset is of. If it is a 
//sound asset, it doesn't go under Texture. if it is a 3D model, it doesn't go under Texture.class
//Which class added depends on the asset you load

//... other loading here ...//

//when finished, call finishLoading:
am.finishLoading();

Теперь, когда вы чувствуете, что получаете badlogic.jpg :

Texture texture = am.get("badlogic.jpg");
//Ready to render! The rendering itself is in the normal way

Использование AssetManager позволяет загружать их один раз в память AssetManager, а затем получать их столько раз, сколько вы хотите.

Зачем использовать AssetManager? (из вики ):

AssetManager (код) помогает вам загружать и управлять вашими активами. Это рекомендуемый способ загрузки ваших активов из-за следующих хороших поведений:

  • Загрузка большинства ресурсов выполняется асинхронно, поэтому вы можете отображать экран реактивной загрузки во время загрузки
  • Активы подсчитываются. Если два актива A и B зависят от другого актива C, C не будет удаляться до тех пор, пока не будут выбраны A и B. Это также означает, что если вы загружаете актив несколько раз, он будет фактически разделен и будет занимать память только один раз!
  • Единственное место для хранения всех ваших активов.
  • Позволяет прозрачно реализовывать такие вещи, как кеши (см. FileHandleResolver ниже)

График 2D-сцены

Когда вы начнете работу с Java или Android, вы быстро узнаете, что (0,0) находится в верхнем левом углу. Однако в LibGDX (0,0) по умолчанию находится в нижнем левом углу.

Используя ортографическую камеру, вы можете получить (0, 0) в верхнем левом углу. Хотя по умолчанию (0, 0) находится в нижнем левом углу. Это то, что важно знать, так как он также изменяет, какой угол текстур имеет координаты X и Y.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow