Усовершенствованный японский дисплей с использованием пользовательских процессоров контента

Страница обновлена :
Дата создания страницы :

О японском дисплее

Текстовый рисунок в MonoGame использует SpriteFont, а также XNA. Для SpriteFont, см отображение alphanumeric символов и шрифта Стиль Детали, как это то же самое, как XNA.

Если вы используете SpriteFont, вы должны указать символы, которые вы хотите использовать заранее. Если это только алфавитные символы, это может быть сделано почти без затрат, как спецификация персонажа и время сборки, потому что это около 100 символов, но когда дело доходит до японского, он становится тысячи символов, так что время сборки становится чрезвычайно длинным. Если вы укажете только символы, которые будут использоваться, время сборки может быть сокращено до некоторой степени, но это хлопотно указать символ, который будет использоваться в обратном направлении, и это становится еще более хлопотно, если есть изменения в символе, который будет использоваться.

В ответ на эту проблему, "Ninari GD"сайт был настроен, чтобы сделать рисунок японский в XNA более гладко (кстати, сайт перспективе Yuichi Ito - MSFT является одним из разработчиков XNA Framework). Это упрощает определение символов для использования, сокращение времени сборки, украшение символов и многое другое. Для получения дополнительной информации, пожалуйста, обратитесь к ссылке.

WPF フォントプロセッサーで作成されたテキストの描画

Тем не менее, "процессор шрифта WPF", представленный на странице, предназначен для XNA и не может быть использован как в MonoGame. Так что я хотел бы портировать это на MonoGame.

Скачать процессор шрифта WPF

Открыть следующие сайты:

ひにけにGD - 真・簡単(かもしれない)日本語表示

Прокрутите вниз до двух ссылок и нажмите на ссылку выше, чтобы загрузить проект, содержащий код сортировки. Нижняя из них только DLL, так что вам не придется загружать его.

プロジェクトをダウンロード

Пожалуйста, извлеките загруженный файл, чтобы вы могли получить содержимое.

ダウンロードされたファイル

Создание проекта процессора шрифтов WPF

Я хотел бы создать процессор шрифта WPF DLL, который работает с "Любой процессор", но по некоторым причинам, когда я создаю проект с "Content Pipeline Extension Library" XNA Framework, я могу создать его только в x86, так что я создаю его из обычной библиотеки класса здесь.

クラス ライブラリの作成

При создании проекта вам не нужно "Class1.cs", поэтому удалите его.

「Class1.cs」の削除

Далее добавьте ссылку.

参照の追加

Поскольку вы рисуете текст в WPF, вам нужна ссылка, связанная с WPF. Во-первых, проверьте "PresentationCore" из "Рамочная".

「PresentationCore」にチェック

Далее, проверить "WindowsBase". Теперь нажмите кнопку OK, чтобы подтвердить и открыть справочный менеджер снова.

「WindowsBase」にチェック

Выберите Просмотр слева и нажмите кнопку Просмотра ниже.

「参照」ボタンをクリック

Откройте следующий путь папки:

  • C:«Программные файлы (x86)»MSBuild-MonoGame-v3.0»Инструменты»

Оттуда добавьте следующие два DLLs:

  • MonoGame.Framework.dll
  • MonoGame.Framework.Content.Pipeline.dll

2つの DLL を追加

Убедитесь, что он проверен и нажмите кнопку OK.

チェックされていることを確認

Просмотрите добавленные ссылки.

追加された参照を確認

Добавьте исходный код из папки "WpfFontPipe" из проекта, который вы скачали, в проект, который вы сейчас редактируете.

ソースコードを追加

Состояние, в которое вы добавили.

追加した状態

Убедитесь, что конфигурация сборки "Release" и "Любой процессор".

ビルド構成が「Release」「Any CPU」になっていることを確認

Выполните сборку, чтобы увидеть, если он был построен успешно.

ビルド結果

Создается DLL.

DLL が作成されていることを確認

Создание игрового проекта

Создайте проект для MonoGame. Не имеет значения, какая это платформа.

MonoGame のプロジェクトを作成

Поместите только что созданный DLL в папку Содержимого. Это не имеет значения, где DLL, но в этом случае вам понадобится относительный или абсолютный путь, так что я оставлю его здесь на данный момент.

 DLL を Content フォルダに配置

Открыть Content.mgcb и открыть Ссылки с контентом выбран.

Если вы дважды нажмете кнопку "Content.mmcb", чтобы не открыть его, начните "MonoGame Pipeline" из меню "Пуск".

References を開く

В текстовом поле введите имя файла DLL, который вы только что создали, или путь относительно или абсолютный путь от Content.mgcb.

После настройки DLL по-прежнему не отражается, поэтому, как только вы сохраните проект, выйдите из моноиграмного трубопровода и вновь откроете его.

DLL のファイル名を入力

Создает шрифт спрайта. Выберите из меню «Редактировать» (Добавить новый пункт).

スプライトフォントを作成

Выберите "SpriteFont Описание" из числа элементов, чтобы добавить его. (Кстати, после добавления SpriteFont я открыл файл SpriteFont, чтобы облегчить его возможность увидеть во время выполнения и изменил имя шрифта и размер.)

「SpriteFont Description」を選択

Если вы выберете добавленный SpriteFont, вы увидите, что процессор шрифта WPF доступен в процессоре.

「WPF フォントプロセッサー」が選択できる

Поскольку каждый параметр может быть установлен, на этот раз я попытался установить его, как показано на рисунке на данный момент. К сожалению, вы не можете изменить цвет в текущей версии MonoGame pipeline.

各パラメータ設定

Попробуйте построить. 6860 символов были построены, потому что он включал до уровня JIS 2. Тем не менее, время составляет около девяти секунд, так что вы можете видеть, что это довольно быстро.

ビルド完了

Теперь мы рисуем с помощью этого SpriteFont, и код точно такой же, как XNA. Вы можете нарисовать текст, используя код, введенный в "Отображение алфавитных символов", как это. Конечно, японский также возможно.

Я хотел бы поместить только код, который я добавил один раз.

Часть определения поля. Добавлен "SpriteFont".

GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

SpriteFont font;

Загрузка и создание данных шрифта в методе LoadContent.

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");
}

Рисунок с японцем в методе рисования.

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);
}

При выполнении текст нарисован. Это немного трудно понять, но буквы имеют границы и синие градации внутри.

Так рисовать японцев стало легко, и стало возможным нарисовать персонажа украшением.

テキストの描画結果

Наконец, вы не можете изменить цвет текстового оформления на monoGame Pipeline, но вы можете открыть файл напрямую и изменить его.

После того как вы сохранили и закрыли проект, откройте файл .mccb в виде текстового файла.

「.mgcb」ファイルをテキストファイルで開く

Если вы прокрутите вниз, есть цветная информация в целевом параметре, поэтому, пожалуйста, отредактируйте ее непосредственно там.

色情報を直接編集

Сохранив текст, откройте monoGame Pipeline снова и постройте его. Вы можете видеть, что цвет изменился при запуске его.

色変更したテキスト