ฉันจะได้รับข้อความเล็ก ๆ ที่สวยงามใน XNA โดยไม่ต้องใช้ห้องสมุดภายนอกได้อย่างไร


13

ใน XNA เทคโนโลยี spritefont นั้นน่ากลัว Nuclex ทำงานได้ดีขึ้นมาก แต่ฉันไม่ต้องการให้มีการอ้างอิงภายนอกและฉันเกือบจะทำกับเกมของฉัน

เมื่อใช้แบบอักษรเช่น Sansation หรือ Quicksand มันดูแย่มากในแบบอักษรขนาดเล็ก มันเลวร้าย!

มีวิธีแก้ไขเฉพาะหน้าสำหรับสิ่งนี้หรือไม่? ฉันพยายามตั้งค่าฟอนต์ให้สูงมากแล้วลดขนาดลงในสไปรต์แบตช์โดยไม่มีโชค


ฉันใช้SpriteFontเพื่อสร้างแบบอักษรของฉันสำหรับ XNA คุณมีความยืดหยุ่นมากมาย ฉันยังตรวจสอบให้แน่ใจว่าตำแหน่งของแบบอักษรนั้นเป็นจำนวนเต็มดังนั้นจึงไม่มีการลดรอยหยักที่น่ารังเกียจเกิดขึ้น แต่นี่อาจไม่ใช่วิธีที่ยอดเยี่ยม คุณสามารถลองใช้การกรองจุดในการโทรข้อความ spritebatch เช่นกัน
Jonathan Connell

อย่าลืมทดสอบแบบอักษรเล็ก ๆ ของคุณบนอุปกรณ์จริงและผู้คนที่หลากหลาย หากเป็น 360 รายการและกำหนดเป้าหมายทีวีขนาดขององค์ประกอบภาพทั้งหมดมักจะต้องมีขนาดใหญ่กว่าบนหน้าจอพีซีเล็กน้อย
Lars Viklund

ฉันเล่นเกมพีซีและขนาดตัวอักษรถูกกำหนดเป็นจำนวนเต็ม
Mathias Lykkegaard Lorenzen

1
อย่าปรับขนาดตัวอักษรสร้าง spritefont สำหรับทุกขนาดที่คุณต้องการ
Wouter

1
กฎเพิ่มเติมสำหรับคุณที่นี่ ยึดตำแหน่งเวกเตอร์จำนวนเต็มก่อนการแสดงผลมิฉะนั้นการสุ่มตัวอย่างจะทำให้การส่งออกดูข้อความของคุณขยะ อาจคุ้มค่าที่จะเปลี่ยนการเก็บตัวอย่างพื้นผิวเป็นจุด / เพื่อนบ้านที่ใกล้ที่สุดก่อนแสดงข้อความ โดยเฉพาะอย่างยิ่งถ้าแบบอักษรของคุณเป็นพิกเซล :)
Cubed2D

คำตอบ:


11

XNA ช่วยให้คุณสามารถนำเข้าเนื้อเป็น spritefont คุณอาจได้คำแนะนำและการลดรอยหยักในแบบอักษรของคุณได้ดีขึ้นหากคุณวางอักขระแต่ละตัวด้วยตนเองในโปรแกรมแก้ไขภาพที่ดีแทนที่จะอาศัยแผ่นงานสไปรต์ที่ XNA สร้างขึ้น


13

โปรเซสเซอร์ฟอนต์ XNA sprite ใช้การบีบอัด DXT3 ที่ไม่สามารถทำงานได้ดีกับอัลฟาก่อนกำหนดใหม่ใน XNA 4.0 ดังนั้นรูปลักษณ์ที่ถูกบล็อกของข้อความ

ตัวประมวลผลแบบอักษรของ Nuclex spriteแสดงผลข้อมูลเดียวกันทุกประการยกเว้นภายในTexture2Dที่เก็บข้อมูลบิตแมปแบบอักษรจะไม่ถูกบีบอัดดังนั้นจึงไม่มีปัญหาคุณภาพ

เนื่องจากข้อมูลจากหน่วยประมวลผล Nuclex อยู่ในรูปแบบเดียวกันSpriteFontเครื่องอ่านXNA จึงสามารถอ่านได้และคุณไม่จำเป็นต้องรวมไลบรารี Nuclex ใด ๆ ไว้เพื่อจำหน่ายในเกมของคุณ

(นอกจากนี้ยังช่วยให้คุณสามารถใช้รูปแบบ XML เดียวกันกับนิยามฟอนต์สไปรท์ดั้งเดิมของ XNA ได้อย่างสะดวก)

ที่ถูกกล่าวว่า: ไม่มีอะไรผิดปกติกับการรวมห้องสมุดภายนอกกับเกมของคุณ ไม่ใช่ว่าพวกเขาจะติดตั้งในระบบของคุณหรืออะไร (คุณสามารถไปได้ไกลถึงการรวมสองแอสเซมบลี)

และสิ่งเดียวกันก็คือรหัส (ถ้าคุณกังวลเกี่ยวกับการควบคุมเวอร์ชันเช่น) คุณสามารถใส่Nuclex.Fonts.Content.TrueTypeImporter.dllรหัสแหล่งที่มาของคุณ อันที่จริงมันไม่ใช่เรื่องใหญ่


9

คุณสามารถใช้แบบอักษรพิกเซล :

ตัวแปร pf tempesta

เมื่อคุณใช้ฟอนต์พิกเซลตามขนาดฟอนต์นั้นได้รับการออกแบบมาสำหรับ (หรือหลายเท่าของมันเช่น 2x, 3x, 4x) คุณจะมั่นใจได้ว่าข้อความพิกเซลสมบูรณ์แบบที่ไม่ต้องมีการลดรอยหยัก ซึ่งหมายความว่าคุณไม่ต้องจัดการกับการต่อต้านนามแฝงที่น่ากลัวซึ่งทำให้แบบอักษรสไปรต์ของ XNA แย่มากและ Nuclex ดีขึ้นมาก ( บทความนี้ตรวจสอบปัญหานั้นและเปรียบเทียบ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.