Özel içerik işlemcileri kullanan gelişmiş Japonca ekran
Japon ekran hakkında
MonoGame metin çizim SpriteFont yanı sıra XNA kullanır. SpriteFont için, XNA ile aynı olduğu için Alfasayısal Karakterleri ve Yazı Tipi Stili Ayrıntılarını Görüntüleme'ye bakın.
SpriteFont kullanıyorsanız, kullanmak istediğiniz karakterleri önceden belirtmeniz gerekir. Sadece alfasayısal semboller ise, yaklaşık 100 karakter olduğu için bir karakter belirtimi ve inşa süresi olarak hemen hemen hiçbir maliyet ile yapılabilir, ancak Japonca söz konusu olduğunda, binlerce karakter olur, böylece inşa süresi son derece uzun olur. Yalnızca kullanılacak karakterleri belirtirseniz, yapı süresi bir dereceye kadar kısaltılabilir, ancak ters te kullanılacak karakteri belirtmek zahmetli olur ve kullanılacak karakterde bir değişiklik olduğunda daha da zahmetli olur.
Bu soruna yanıt olarak, "Ninari GD"sitesi XNA daha sorunsuz Japonca Çizim yapmak için özelleştirilmiştir (bu arada, site tarafından işletilen Yuichi Ito - MSFT XNA Çerçeve geliştiricilerden biridir). Bu, kullanılacak karakterleri belirtmeyi, yapı süresini kısaltmayı, karakterleri dekore etmeyi ve daha fazlasını kolaylaştırır. Daha fazla bilgi için lütfen bağlantıya bakın.
Ancak, sayfada sunulan "WPF yazı tipi işlemcisi" XNA içindir ve MonoGame'de olduğu gibi kullanılamaz. Bunu MonoGame'e taşımak istiyorum.
WPF Yazı İşlemcisi'ni indirin
Aşağıdaki siteleri açın:
İki bağlantıya gidin ve sıralama kodunu içeren projeyi indirmek için yukarıdaki bağlantıyı tıklatın. Alt olan sadece bir DLL, bu yüzden indirmek zorunda değilsiniz.
İçeriği alabilmeniz için lütfen indirilen dosyayı ayıklayın.
WPF Yazı Tipi İşlemcisi Projesi Oluşturma
Ben "Herhangi bir CPU" ile çalışan bir WPF yazı tipi işlemci DLL oluşturmak istiyorum, ama nedense ben XNA Çerçeve "İçerik Boru Hattı Uzantısı Kütüphanesi" ile bir proje oluşturmak, ben sadece x86 oluşturabilirsiniz, bu yüzden burada düzenli bir sınıf kütüphanesinden oluşturacağım.
Bir proje oluşturduğunuzda, "Class1.cs" gerekmez, bu nedenle silin.
Ardından, bir başvuru ekleyin.
WPF'de metin çizdiğiniz için WPF ile ilgili bir başvuruya ihtiyacınız var. İlk olarak, "Framework"den "PresentationCore"u işaretleyin.
Ardından "WindowsBase" denetimine bakın. Şimdi Başvuru Yöneticisi'ni onaylamak ve yeniden açmak için Tamam düğmesine basın.
Soldaki Gözat'ı seçin ve aşağıdaki Gözat düğmesine tıklayın.
Aşağıdaki klasör yolunu açın:
- C:\Program Dosyaları(x86)\MSBuild\MonoGame\v3.0\Tools\
Oradan, aşağıdaki iki DLs ekleyin:
- MonoGame.Framework.dll
- MonoGame.Framework.Content.Pipeline.dll
Kontrol edildiklerden emin olun ve Tamam düğmesini tıklatın.
Eklenen başvuruları gözden geçirin.
İndirdiğiniz projeden (WpfFontPipeline) klasöründen kaynak kodunu şu anda düzenlemekte olduğunuz projeye ekleyin.
Eklediğiniz eyalet.
Yapı yapılandırmasının "Release" ve "Any CPU" olduğunu doğrulayın.
Başarılı bir şekilde oluşturulıp oluşturulmamasını görmek için bir yapı gerçekleştirin.
DLL oluşturulur.
Bir oyun projesi oluşturma
MonoGame için bir proje oluşturun. Hangi platform olduğu önemli değil.
Oluşturduğunuz DLL'yi İçerik klasörüne yerleştirin. DLL'nin nerede olduğu önemli değil, ama bu durumda göreceli ya da mutlak bir yola ihtiyacın olacak, bu yüzden şimdilik burada bırakacağım.
Content.mgcb'yi açın ve Seçili İçerikli Referansları Açın.
Açmamak için "Content.mmcb"ye çift tıklarsanız, Başlat menüsünden "MonoGame Pipeline"ı başlatın.
Metin kutusuna, az önce oluşturduğunuz DLL'nin dosya adını veya Content.mgcb'den gelen veya mutlak yola göreolan yolu yazın.
Bunu ayarladıktan sonra, DLL hala yansıtmaz, bu nedenle projeyi kurtardıktan sonra monoGame Pipeline'dan çıkın ve yeniden açın.
Bir sprite yazı tipi oluşturur. Menüden "Edit" >Ekle→Yeni Öğe'yi seçin.
Eklemek için öğeler arasından "SpriteFont Açıklaması"nı seçin. (Bu arada, SpriteFont ekledikten sonra, daha kolay çalışma zamanında görmek için SpriteFont dosyasını açtı ve yazı tipi adı ve boyutunu değiştirdi.)
Eklediğiniz SpriteFont'u seçerseniz, WPF Font İşlemcisi'nin İşlemci'den edinilebilen bir kaynak olduğunu görürsünüz.
Her parametre ayarlanabildiği için, bu sefer şu an için şekilde gösterildiği gibi ayarlamaya çalıştım. Ne yazık ki, MonoGame Pipeline'ın geçerli sürümündeki rengi değiştiremezsiniz.
İnşa etmeye çalış. 6860 karakter JIS seviye 2'ye kadar dahil olduğu için oluşturulmuş. Yine de, zaman yaklaşık dokuz saniye, bu yüzden oldukça hızlı olduğunu görebilirsiniz.
Şimdi, bu SpriteFont'u kullanarak çizim yapıyoruz, ve kod XNA ile tamamen aynı. "Alfasayısal karakterleri görüntüle" kodu kullanarak metin çizebilirsiniz. Tabii ki, Japonca da mümkündür.
Sadece bir kez eklediğim kodu koymak istiyorum.
Alanın tanımı kısmı. "SpriteFont" eklendi.
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
SpriteFont font;
LoadContent yönteminde yazı tipi verilerinin yüklenmesi ve oluşturulması.
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
// TODO: use this.Content to load your game content here
// フォントデータの読み込み
font = Content.Load<SpriteFont>("Font");
}
Draw yönteminde Japonca ile çizim.
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
spriteBatch.Begin();
spriteBatch.DrawString(font, "真・簡単(かもしれない)日本語表示",
new Vector2(50, 50), Color.White);
spriteBatch.DrawString(font, @"・OpenTypeフォント対応
・処理速度の高速化
・JIS漢字追加機能
・文字装飾",
new Vector2(50, 150), Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
Yürütüldüğünde, metin çizilir. Anlamak biraz zor ama harflerin içinde kenarlıklar ve mavi geçişler var.
Bu şekilde Japonca çizmek kolay laştı ve karakteri dekorasyonla çizmek mümkün oldu.
Son olarak, monoGame Pipeline'daki metin dekorasyonunun rengini değiştiremezsiniz, ancak dosyayı doğrudan açıp değiştirebilirsiniz.
Projeyi kaydedip kapattıktan sonra .mccb dosyasını metin dosyası olarak açın.
Aşağı kaydırırsanız, hedef parametrede renk bilgileri vardır, bu nedenle lütfen doğrudan orada edin.
Metni kurtardıktan sonra monoGame Pipeline'ı yeniden açın ve oluşturun. Çalıştırdığınızda rengin değiştiğini görebilirsiniz.