사용자 지정 콘텐츠 프로세서를 사용한 고급 일본어 디스플레이
일본어 표시에 관하여
MonoGame에서 텍스트 렌더링은 XNA와 마찬가지로 SpriteFont를 사용 합니다. SpriteFont에 대 한 자세한 내용은 XNA와 같은 「 영숫자를 표시 한다 "또는" 글꼴 스타일 」을 참조 하십시오.
SpriteFont를 사용 하는 경우 사전에 사용할 문자를 지정 해야 합니다. 영숫자 기호 경우 고작 100 자 정도 문자를 지정 하거나 빌드 시간도 거의 비용 없이 가능 하지만 일본어와 수천 되어 버리는 데, 빌드 시간이 끝 되어 버립니다. 사용 하는 문자만 지정 하면 어느 정도의 빌드 시간이 단축 될 수 있지만 반대로 사용할 문자를 지정 하는 것이 번거롭고, 사용 문자 변경 된 경우에는 더 불편 합니다.
이 문제에 대 한 「 미에 케에 GD」 사이트에서는 XNA에서의 일본어의 그리기를 보다 원활 하 게 수행할 수 있도록 사용자 지정 되어 있습니다 (참고로 사이트 운영 되 고 있는 Yuichi Ito-MSFT 씨는 XNA Framework 개발자 중 하나입니다). 이것을 이용 하면 사용할 문자 지정 쉽게 빌드 시간 단축, 문자 장식 등이 있는 것 같습니다. 자세한 내용은 링크를 참조 하십시오.
그러나 페이지 앞에 소개 된 「 WPF 글꼴 가공 업자 」는 XNA 용 이므로 MonoGame에서 그대로 사용할 수 없습니다. 며 이것을 MonoGame에 이식 해 보고자 합니다.
WPF 글꼴 프로세서 다운로드
다음 웹 사이트를 엽니다.
아래로 스크롤하면 링크가 두 개 있고, 위의 링크를 클릭 하면 정렬 코드가 포함 된 프로젝트를 다운로드할 수 있습니다. 아래는 DLL만 이기 때문에 다운로드 하지 않아도 좋다.
다운로드 한 파일의 내용을 검색할 수 있도록 확장 하십시오.
WPF 글꼴 프로세서 프로젝트 만들기
이번에 만드는 「 WPF 글꼴 가공 」의 DLL은 「 Any CPU 」로 작동 하는 무슨을 만들고 싶은데, XNA Framework 「 Content Pipeline Extension Library 」에서 프로젝트를 만들 때 왜 x86 밖에 만들 수 없기 때문에, 여기서는 일반적으로 클래스 라이브러리를 만듭니다.
프로젝트를 만든 후 「 Class1.cs 」은 필요 없으므로 삭제 합니다.
연속적으로 참조를 추가 합니다.
WPF에서 텍스트를 렌더링 하므로 WPF 관련 참조 해야 합니다. 우선은 「 기구 」에서 「 PresentationCore 」에 체크를 합니다.
따라서 「 WindowsBase 」에 체크를 합니다. 여기에 일단 OK 버튼을 눌러 확인 하 고 다시 참조 관리자를 여십시오.
왼쪽 참고 항목 상자를 선택 하 여 아래의 「 참조 」 버튼을 클릭 하십시오.
다음 폴더를 엽니다.
- C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\
거기에서 두 개의 DLL을 추가 합니다.
- MonoGame.Framework.dll
- MonoGame.Framework.Content.Pipeline.dll
선택 되어 있는지 확인 하 고 「 OK 」 버튼을 클릭 합니다.
추가 된 참조를 확인 합니다.
연속적으로 다운로드 된 프로젝트에서 「 WpfFontPipeline 」 폴더에 있는 소스 코드를 현재 편집 중인 프로젝트에 추가 합니다.
추가 된 상태입니다.
빌드 구성이 「 Release "Any CPU 」로 되어 있는지 확인 합니다.
빌드를 실행 하 고 성공적으로 빌드 되었는지 확인 하십시오.
DLL이 생성 되어 있는지 확인 합니다.
게임 프로젝트 생성
MonoGame 프로젝트를 만듭니다. 플랫폼은 뭐 든 지 상관 없습니다.
방금 만든 DLL을 Content 폴더에 넣어 둡니다. DLL 위치는 어디 든 상관 없지만, 그럴 경우 상대 또는 절대 경로를 확인 해야 되기 때문에, 일단 이번에는 여기에 둡니다.
Content.mgcb를 열고 「 Content 」를 선택한 상태에서 「 References 」를 엽니다.
※ 「 Content.mgcb 」를 더블 클릭 해도 열리지 않으면 시작 메뉴에서 「 MonoGame Plipeline 」를 시작 하십시오.
텍스트 상자에 방금 만든 DLL 파일 이름, 또는 Content.mgcb의 상대 경로 또는 절대 경로를 입력 합니다.
설정 후에는 여전히 DLL이 반영 되지 않기 때문에 프로젝트를 저장 하려면 MonoGame Pipeline을 닫고 다시 여십시오.
스프라이트 글꼴을 만듭니다. 메뉴에서 「 Edit 」 → 「 Add 」 → 「 New Item 」을 선택 합니다.
항목에서 「 SpriteFont Description 」를 선택 하 여 추가 합니다. (공식적으로 SpriteFont를 추가한 후 런타임에 볼 수 있도록 SpriteFont 파일을 열어 글꼴 이름과 크기를 변경할 수 있습니다)
추가한 SpriteFont를 선택 하면 Processor에서 「 WPF 글꼴 가공 」을 선택할 수 있도록 되어 있는 것을 알 수 있습니다.
각 매개 변수를 설정할 수 있으므로, 일단 이번에는 그림과 같이 설정 하 여 보았습니다. 안타깝게도 현재 버전의 MonoGame Pipeline에서는 색을 변경할 수 없습니다.
빌드 해 봅니다. JIS 제 2 수준까지 포함 했기 때문에 6860 문자가 작성 되었습니다. 그래도 시간은 9 초 정도 이기 때문에 현저 하 게 향상 되 고 있음을 알 수 있습니다.
그럼이 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");
}
Draw 메서드에서 일본어를 사용 하 여 렌더링 합니다.
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에서 변경할 수 없습니다, 파일을 직접 열어서 수정할 수 있는 방법을 설명 합니다.
프로젝트를 저장 하 고 닫은 경우 「 .mgcb 」 파일을 텍스트 파일로 엽니다.
아래로 스크롤할 때 대상 매개 변수의 색 정보가 있기 때문에 그곳을 직접 편집 하십시오.
텍스트를 저장 한 후 다시 MonoGame Pipeline을 열고 빌드합니다. 실행할 때 색이 변하는 것을 알 수 있습니다.