Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Документация для продвинутых пользователей
                Интеграция Nifty GUI: Проецирование

Интеграция Nifty GUI: Проецирование

Опубликованно: 20.08.2017, 20:09
Последняя редакция, Andry: 21.08.2017 16:24
  1. Концепция Nifty GUI
  2. Nifty GUI Рекомендации
  3. Nifty GUI XML Компоновка или Nifty GUI Java Компоновка
  4. Nifty GUI Накладывается или Nifty GUI Проецируется
  5. Nifty GUI Java Взаимодействие

nifty-gui

Обычно вы задаёте клавиши (например, escape) для включения и выключения GUI. Затем вы накладываете GUI на текущую игру (вы, скорее всего, приостановите игру).

Кроме того, вы также можете проецировать GUI в виде текстуры на текстуры сеток(mesh) внутри игры. Несмотря на то, что это выглядит здорово и «усиливающим погружение в игру», этот подход редко используется, поскольку регистрация кликов по такому GUI затруднительна. Вы можете взаимодействовать с этим проецируемым GUI с клавиатуры или программно. Вы можете выбирать поля ввода с помощью клавиш со стрелками и запускать действия с помощью клавиши return.

Этот вариант проекции GUI реже используется, чем вариант наложения GUI. Случаи использования проекции GUI — это например аватар игрока, использующий экран игрового компьютера.

Образец кода

Проецирование пользовательского интерфейса на текстуру

Вы можете проецировать Nifty GUI на текстуру, загружать текстуру в материал и назначать его геометрии (лучше всего использовать квадраты или четырехугольник).

/** Создадим специальны viewport для Nifty GUI */
ViewPort niftyView = renderManager.createPreView("NiftyView", new Camera(1024, 768));
niftyView.setClearEnabled(true);
/** Создадим новый NiftyJmeDisplay для интеграции */
NiftyJmeDisplay niftyDisplay = NiftyJmeDisplay.newNiftyJmeDisplay(
  assetManager,  inputManager,  audioRenderer,  niftyView);
/** Создадим новый NiftyGUI объект */
Nifty nifty = niftyDisplay.getNifty();
/** Прочитаем ваш XML и инициализируем ваш пользовательский ScreenController */
nifty.fromXml("Interface/helloworld.xml", "start", new MySettingsScreen(data));

/** Подготовим framebuffer для текстуры niftytex */
niftyView.addProcessor(niftyDisplay);
FrameBuffer fb = new FrameBuffer(1024, 768, 0);
fb.setDepthBuffer(Format.Depth);
Texture2D niftytex = new Texture2D(1024, 768, Format.RGB8);
fb.setColorTexture(niftytex);
niftyView.setClearEnabled(true);
niftyView.setOutputFrameBuffer(fb);

/** Этоe 3D куб на который мы проецируем GUI */
Box b = new Box(Vector3f.ZERO, 1, 1, 1);
Geometry geom = new Geometry("Box", b);
Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
mat.setTexture("m_ColorMap", niftytex); /** Вот текстура! */
geom.setMaterial(mat);
rootNode.attachChild(geom);

Класс MySettingsScreen — это настраиваемый файл de.lessvoid.nifty.screen.ScreenController, в котором вы реализуете поведение своего GUI. Данные переменных содержат объект, который вы используете для обмена информацией о состоянии игры. См. Nifty GUI Java Взаимодействие для получения подробных сведений о том, как создать этот класс.

Запустите образец кода. Вы выбираете кнопки в этом GUI с помощью клавиш со стрелками и затем нажимаете return. Обратите внимание, что щелчок мышью по текстуре не будет работать!

Следующие шаги

Теперь, когда вы скомпоновали и интегрировали GUI в своё приложение, вы хотите реализовать реакцию на ввод пользователя и сделать это в текущей игре.


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.