Я пишу 2D-плитку на Java. Персонажи должны быть помещены на плитки в соответствии с логикой игры. Каждый символ связан с изображением, которое будет нарисовано на экране с использованием java.awt.Graphics2D
. Однако на карте может быть более одного экземпляра каждого символа.Java загружает изображение в класс - самая эффективная практика?
Какова рекомендуемая практика хранения и доступа к изображениям персонажей?
Есть три возможных реализаций я мог думать:
- Наличия каждого символа назначенного приватные переменный типа
java.awt.image.BufferedImage
. Каждый раз, когда объект нужно нарисовать, изображение обращается с помощью геттера. Однако будет ли это иметь чрезмерное значение размера объекта? - Наличие еще одной утилиты Класс для хранения всех изображений в статической переменной. Каждый раз, когда персонаж должен быть нарисован, изображение можно вызвать, передав id/name статическому методу getter в классе утилиты. Будет ли это более эффективным или будет довольно медленным, чем предыдущий метод?
- Просто загрузите изображение каждый раз, когда персонаж должен быть нарисован. Это спровоцировало бы
ImageIO.read(new File(character.getImagePath())
каждый раз, когда персонаж должен быть нарисован. Может ли это быть самым быстрым?
Ни в коем случае нельзя использовать опцию 3. Метод рисования обычно называется * несколько раз в секунду. * Чтение файла, который часто, даже с использованием кэша операционной системы, замедляет вашу игру до обхода. – VGR
Используйте лист спрайта вместо отдельных изображений. – eldo