Если при рендеринге каждый кадр отображается полностью с нуля, вы можете добавить, например, статическое логическое значение в одном классе с помощью метода postRender ().Затем внутри метода используйте статический оператор if, чтобы проверить, является ли логическое значение true, если нет, в противном случае ничего не делайте, если затем установите логическое значение на false через
ClassName.boolean_name=false;
HUD не должен отображаться.Что касается его изменения, это возможно и будет зависеть от того, какую информацию вы хотите показать.Вот пример, который я бы использовал для игр, но он может подходить для нескольких предметов.
Я бы хотел сохранить позиции FPS, x, y и z. Если бы я работал над игрой, то что бы я сделал?сделать это создать переменную внутри класса для каждого атрибута, который мне нужно отобразить, затем что-то вроде этого:
Graphics2D G2D = this.getGraphics2D()
G2D.setColor(Color.white);
G2D.drawString("FPS: "+fps, 100, 100);
G2D.drawString("X: "+x_pos, 100, 80);
G2D.drawString("Y: "+y_pos, 100, 60);
G2D.drawString("Z: "+z_pos, 100, 40);
G2D.flush(false);
Также, если вы заметите, я установил G2D равным this.getGraphics2D (), таким образом, я не сделал 'Мне нужно вызывать внешний метод каждый раз, когда я хотел использовать объект Graphics2D, каждый раз, когда вы вызываете getGraphics2D (), он должен идти в этот класс, вызывать этот метод и возвращать значение по сравнению с простым получением его один раз, ииспользуя его, более быстрый тип, и в конечном итоге создает более быстрые скорости.
Что бы я сделал после всего этого, я мог бы просто установить для каждой переменной правильное значение, и это отобразило бы, это один из способовобновив его, вы можете сделать аналогичные переменные make для каждой строки и перейти:
line1="this is some text";
list2="this is some more text";
list3="etc...";