Dans XNA, la technologie spritefont est horrible. Nuclex fait tellement mieux le travail, mais je ne veux pas avoir de références externes, et j'ai presque fini avec mon jeu.
Lorsque vous utilisez des polices comme Sansation ou Quicksand, cela semble terrible dans les petites tailles des polices. C'est tellement mauvais!
Existe-t-il une solution connue à cela? J'ai essayé de définir les tailles de police sur extrêmement élevé, puis de les réduire dans le spritebatch sans succès.
Réponses:
XNA vous permet d'importer une texture en tant que spritefont . Vous pouvez probablement obtenir un meilleur indice et un anti-aliasing dans votre police si vous disposez manuellement chaque caractère dans un bon programme d'édition d'image, plutôt que de vous fier à la feuille de sprite que XNA génère.
la source
Le processeur de polices sprite XNA utilise la compression DXT3 qui ne fonctionne pas bien avec le nouvel alpha prémultiplié dans XNA 4.0. D'où l'aspect bloc du texte.
Le processeur de polices sprite Nuclex génère exactement les mêmes données, sauf que l'interne
Texture2D
qui contient les données bitmap de police n'est pas compressé - il n'a donc aucun problème de qualité.Étant donné que les données du processeur Nuclex sont au même format, le XNA
SpriteFont
lecteur peut les lire et vous n'avez pas besoin d'inclure de bibliothèques Nuclex pour les distribuer avec votre jeu.(Il vous permet également d'utiliser le même format XML que les définitions de police de sprite natives de XNA.)
Cela étant dit: il n'y a rien de mal à regrouper des bibliothèques externes avec votre jeu. Ce n'est pas comme s'ils étaient installés sur votre système ou quoi que ce soit. (Vous pourriez même aller jusqu'à fusionner les deux assemblages).
Et la même chose vaut pour le code (si vous êtes préoccupé par le contrôle de version, par exemple). Vous pouvez simplement insérer
Nuclex.Fonts.Content.TrueTypeImporter.dll
votre code source. Ce n'est pas vraiment un gros problème.la source
Vous pouvez utiliser des polices pixel :
Lorsque vous utilisez une police de pixels à la taille de police pour laquelle elle a été conçue (ou un multiple entier, par exemple 2x, 3x, 4x), vous êtes assuré d'avoir un texte parfait au pixel qui ne nécessite pas d'anti-crénelage. Cela signifie que vous n'avez jamais à faire face au terrible anti-aliasing qui rend les polices sprite de XNA si mauvaises et Nuclex tellement mieux. ( Cet article examine ce problème et les compare)
la source