2015-04-17 2 views
0

Я использую FreeTypeFontGenerator для загрузки моих шрифтов. В настоящее время у меня есть 6 разных BitmapFonts, и я загружаю их в конструктор моего класса Screen и рисую их в функции рендеринга. Вот фрагмент кода, myFont - это класс, который я написал, который внутренне использует FreeTypeFontGenerator, а функция loadFont возвращает объект BitmapFont.Libgdx - Загрузка шрифтов замедляет игру

public Screen1() { 
    ..... 
    ..... 

    myFont = new MyFont(); 

    circleFonts = new BitmapFont[4]; 
    for (int i=0; i<4; i++) { 
     circleFonts[i] = myFont.loadFont("fonts/roboto/Roboto-Light.ttf", 20); 
    } 
    textOrColorFont = myFont.loadFont("fonts/roboto/Roboto-Light.ttf",15); 
    currentColorFont = myFont.loadFont("fonts/roboto/Roboto-Light.ttf", 15); 
} 

Проблема заключается в том, так как я должен загрузить эти шрифты каждый раз, когда я перехожу к Screen1, игра застревает на добрых 2-3 секунды, потому что он должен загрузить шрифты из файла. Есть лучший способ сделать это?

Спасибо.

ответ

1

может быть, вы хотите посмотреть на это:

Libgdx FreeTypeFontGenerator with AssetManager

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

AssetManager вики -> https://github.com/libgdx/libgdx/wiki/Managing-your-assets

Я надеюсь, что вы поможете.

+0

Спасибо, что ссылка полезна. Я понимаю, что могу использовать FreeTypeFontLoader с AssetManger, но я не мог заставить его работать. Ссылка github для примера, показывающего, как ее использовать [FreeTypeFontLoaderTest] (https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/FreeTypeFontLoaderTest.java) сломан. Не могли бы вы предоставить мне пример того, как с этим работать? – akshayt23

+0

@ user2558050 Это альтернатива, новая ссылка, надеюсь, вы поможете https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/extensions/FreeTypeFontLoaderTest .Ява –

0

Ну, я не знаком с этой библиотекой, в особенности, но у меня была более тонкая проблема пару лет назад.

Поскольку шрифты являются Ресурсом, они должны загружаться при запуске игры/уровня.

И не во время игры уже работает.

Чтение с диска - операция ввода-вывода, и это довольно дорого, поэтому загрузка всех ваших ресурсов перед использованием (шрифты спрайты и т. Д.) , а затем использование их ссылки - более разумный способ справиться с этим.

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