Отрисовка текста XNA из DLL

Я планирую создать библиотеку 2D-игр для XNA, и одним из компонентов, который я хочу включить, является простой текстовый ящик для целей отладки. Теперь, чтобы нарисовать текст с помощью SpriteBatch, вам нужен файл .spritefont, который представляет собой файл формата xml, и, похоже, его нужно скомпилировать в отдельную папку. Я бы предпочел не копировать это вместе с dll, поэтому вот мой вопрос: могу ли я создать какой-то текстовый рендерер для XNA, который A: не требует от меня носить с собой внешние файлы с dll (если вы можете встроить шрифт спрайта в dll, тогда это работает) и B: не заставляет меня переписывать изрядное количество базового (это управляемый directx? другая часть xna?) кода, который заставляет код SpriteBatch.DrawString работать.


person RCIX    schedule 04.06.2009    source источник


Ответы (2)


Не могли бы вы просто потребовать, чтобы SpriteFont был передан в вашу библиотеку, чтобы тот, кто использует библиотеку, должен был предоставить этот компонент? Казалось бы, это лучшее решение, поскольку тогда они могли использовать любой шрифт, какой хотели. Или вы можете написать компонент, который генерирует xml-файл spritefont на основе заданного имени шрифта, потому что файл не так уж и сложен. Не обращайте внимания. Я забыл, что XNA компилирует свои ресурсы.

person Annath    schedule 04.06.2009
comment
Первый вариант: да, это могло бы сработать, и я полагаю, что мне придется это сделать, если ничего не сработает, но я действительно предпочел бы этого не делать. В конце концов, вы теоретически можете передать шрифт Wingdings и получить что-то совершенно нечитаемое! Вторая возможность: это могло бы работать, за исключением того, что весь код xna, о котором я знаю, работает с скомпилированными версиями файлов (превращает его в файлы xnb, которые являются двоичными представлениями), и получение динамической компиляции из XNA - это совсем другая уловка. - person RCIX; 04.06.2009
comment
Я полагаю, что пользователь библиотеки должен не пройти мимо крыльев. :P И да, я забыл, что он скомпилировал их в файлы xnb. - person Annath; 04.06.2009
comment
Ладно, я просто попрошу спрайт-шрифт. Спасибо за помощь! - person RCIX; 04.06.2009

Вы можете предварительно скомпилировать проект, а затем получить файл xnb для спрайтового шрифта. Затем добавьте файл в папку Content проекта в качестве файла содержимого. Затем его следует развернуть вместе с библиотекой. Однако вам нужно будет создать отдельный файл xnb для каждой платформы, которую вы хотите поддерживать (xbox360, windows, zune), и развернуть правильный файл.

Или почему бы вам просто не создать проект XNA Content Library?

person anonymous    schedule 28.06.2009