Рендеринг Access2D UI на верхней части коробки2d
-
21-12-2019 - |
Вопрос
Я в настоящее время имею проблемы с рендерингом интернет-интерфейса на вершине Box2D Playarea.На данный момент кнопка отображается в углу экрана, но не реагирует на клики, так как кажется, экран считает, что он там нет.Только фотография этого.Ниже приведен код того, как работает экран.Какие дела дела оказываются.Кулачок масштабирования, обновления и установки до и после начала и конца SpriteBatch было тестом, который привел к спрайту в углу, но он все еще ничего не делает.Я очень тупик и был бы признателен за некоторые совет в том, как хорошо обрабатывать рендеринг.
public synchronized void render(float delta) {
getCamControll().update();
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
// RENDER SPRITES
batch.setProjectionMatrix(cam.combined);
batch.begin();
Iterator<Renderable> itr = renderables.iterator();
while (itr.hasNext()) {
Renderable r = itr.next();
r.render(batch);
}
batch.end();
// RENDER DEBUG
sr.setProjectionMatrix(cam.combined);
sr.begin(ShapeType.Line);
for (Renderable r : renderables) {
r.debug(sr);
}
sr.end();
// RENDER GUI
float camzoom = cam.zoom;
Vector3 camPos = cam.position.cpy();
cam.zoom = 1;
cam.position.set(Vector2.Zero, cam.position.z);
cam.update();
batch.setProjectionMatrix(new Matrix4());
if (stage != null) {
batch.begin();
stage.draw();
Array<Actor> actors = stage.getActors();
batch.end();
}
cam.zoom = camzoom;
cam.position.set(camPos);
cam.update();
}
. Решение
Вам необходимо правильно настроить свой входной обработчик, то есть где-то в вашем коде установки / INIT (после того, как вы создали свой этап), вам нужно:
Gdx.input.setInputProcessor(stage);
.
Если box2d (или что-то еще остальное) также нужно обрабатывать вход в дополнение к сцене, вы должны посмотреть на IglueMultiple MultiPlexer libgdx для объединения входных обработчиков.