Harici kütüphaneler kullanmadan XNA'da güzel küçük metinleri nasıl edinebilirim?


13

XNA'da, spritefont teknolojisi korkunçtur. Nuclex işi çok daha iyi yapıyor, ancak herhangi bir dış referans almak istemiyorum ve neredeyse oyunum bitti.

Sansation veya Quicksand gibi fontları kullanırken, daha küçük font boyutlarında korkunç görünüyor. Çok kötü!

Bunun bilinen bir çözümü var mı? Yazı tiplerini son derece yüksek bir değere ayarlamayı ve sonra şanssız spritebatch'da ölçeklendirmeyi denedim.


XNA için fontlarımı oluşturmak için SpriteFont kullanıyorum , çok fazla esnekliğiniz var. Ayrıca, yazı tipinin konumunun bir tamsayı olduğundan emin olun, böylece herhangi bir kötü kenar yumuşatma meydana gelmez, ancak bu muhtemelen harika bir çözüm değildir. Metin spritebatch çağrılarınızda nokta filtrelemeyi de deneyebilirsiniz.
Jonathan Connell

Küçük yazı tiplerinizi çeşitli gerçek cihazlarda ve kişilerde test etmeyi unutmayın. 360 başlık ve dolayısıyla TV'leri hedefliyorsa, tüm görsel öğelerin boyutlarının bir PC ekranından biraz daha büyük olması gerekir.
Lars Viklund

Bir PC oyunu yapıyorum ve yazı tipi boyutu tam sayı olarak ayarlanmış.
Mathias Lykkegaard Lorenzen

1
Metinleri ölçeklemeyin, ihtiyacınız olan her boyut için bir spritefont oluşturun.
Wouter

1
Burada sizin için biraz daha kural. Oluşturmadan önce konum vektörünü tamsayılara sıkıştırın, aksi takdirde örnekleme çıktı metninizin çöp görünmesini sağlar . Metin oluşturmadan önce doku örnekleyiciyi Nokta / En Yakın Komşu olarak değiştirmeye değer olabilir. Özellikle yazı tipiniz pikselli ise :)
Cubed2D

Yanıtlar:



13

XNA sprite yazı tipi işlemcisi, XNA 4.0'daki yeni çarpılmış alfa ile iyi çalışmayan DXT3 sıkıştırması kullanır. Dolayısıyla metnin bloklu görünümü.

Nuclex sprite yazı tipi işlemcisiTexture2D , yazı tipi bitmap verilerini tutan iç kısmın sıkıştırılmaması dışında tamamen aynı verileri verir - bu nedenle kalite sorunları yoktur.

Nuclex işlemcideki veriler aynı formatta olduğundan, XNA SpriteFontokuyucu bunu okuyabilir ve oyununuzla dağıtım için herhangi bir Nuclex kütüphanesi eklemenize gerek yoktur.

(Ayrıca, XNA'nın yerel hareketli grafik yazı tipi tanımlarıyla aynı XML biçimini kullanmanıza da olanak tanır.)

Bununla birlikte, harici kütüphaneleri oyununuzla bir araya getirmenin yanlış bir yanı yok. Sisteminize ya da herhangi bir şeye kuruldukları gibi değil. (İki montajı birleştirecek kadar ileri gidebilirsiniz).

Aynı şey kod için de geçerlidir (örneğin sürüm kontrolü konusunda endişeleniyorsanız). Sadece Nuclex.Fonts.Content.TrueTypeImporter.dllkaynak kodunuzu girebilirsiniz . Aslında önemli değil.


9

Piksel yazı tiplerini kullanabilirsiniz :

pf tempesta varyantı

Bunun için tasarlanan yazı tipi boyutunda bir piksel yazı tipi kullandığınızda (veya 2x, 3x, 4x gibi bir tam katı) kenar yumuşatma gerektirmeyen mükemmel piksel metnine sahip olursunuz. Bu, XNA'nın hareketli yazı tiplerini bu kadar kötü ve Nuclex'i çok daha iyi yapan korkunç kenar yumuşatma ile uğraşmanız gerekmediği anlamına gelir. ( Bu makale bu sorunu inceler ve karşılaştırır)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.