모노 게임을위한 Spritefonts를 생성하는 방법


14

다음을 사용하여 일부 텍스트를 화면에 렌더링하고 싶습니다.

  • 모노 게임 3.0
  • MS Visual Studio 2010 C # Express

XNA에서는 컨텐츠 파이프 라인에 글꼴을 매우 쉽게 추가 할 수있었습니다. 그러나 이것은 모노 게임에서는 그렇지 않습니다. 를 사용하여 TTF 파일을로드 할 Content<SpriteFont>.Load()수 없습니다. 글꼴 데이터가 포함 된 * .spritefont 파일 또는 * .xnb 파일을 생성하거나 다운로드 할 수있는 방법이 있습니까 (XNA 설치없이)?


또한이 문제를 파악하는 데 많은 문제가 있었 으므로이 자습서는 많은 도움이되었습니다. youtube.com/watch?v=BwtQn02oy6A

답변:


5

다른 방법은 미리 생성 된 비트 맵 글꼴을 대신 사용하는 것입니다. 다음은 MonoGame.Extended 라이브러리를 사용하여 게임에 텍스트를 가져 오기 위해 BMFont 도구를 사용하여 잠시 동안 쓴 튜토리얼 입니다.

http://dylanwilson.net/bmfont-rendering-with-monogame-extended


이 솔루션에 100 % 만족하지는 않지만, 지금은 비트 맵 글꼴을 사용하고 가까운 장래에 최고를 기대할 것입니다.
Khôi

더 최근에는 BitmapFont를 MonoGame에 추가했습니다. 확장 라이브러리 dylanwilson.net/bmfont-rendering-with-monogame-extended
craftworkgames

@ J2V 작업 링크를 가리 키도록 답변을 업데이트했습니다. 이전과 정확히 같지는 않지만 여전히 내가 믿는 질문에 대답합니다.
craftworkgames

@craftworkgames 감사합니다! 이전 의견을 삭제하겠습니다.
Jaanus Varus

3

나는 당신과 같은 문제에 부딪쳤다. 고맙게도 이미 .spritefont 파일을 사용하고 XNB 파일을 생성 한 기존 XNA 프로젝트가있었습니다. 방금 컴파일하고 XNB를 MonoGame 프로젝트에 복사하여 아무 문제없이 사용할 수 있습니다.

(면책 조항 : 지침에 따라 MonoGame 3.0 베타 용 XNA 컨텐츠 파이프 라인을 구축하려고 시도했지만 몇 시간 후에 포기했습니다. 프로젝트는 Visual Studio에 제대로 포함되지 않습니다.)


팁 주셔서 감사합니다. 이런 식으로 해결할 수 있다는 것을 아는 것이 좋습니다.
코이

@ Khôi 완벽하지는 않지만 콘텐츠 파이프 라인 프로젝트를 통합하는 방법을 알아내는 동안 적어도 어딘가에 도움을 줄 수 있습니다.
ashes999

2

적어도 올해 8 월에 스프라이트 폰트 생성은 아직 모노 게임에 의해 지원되지 않았지만, 콘텐츠 파이프 라인은 지난 몇 개월 동안 주요 관심사가되었으므로 현재 작동하더라도 놀라지 않을 것입니다. 물론 당신은의 구문을 알아야합니다.spritefont 콘텐츠 폴더에 추가해야하는 파일 합니다. 이를 위해이 게시물의 하단을 참조하십시오.

내가 알 수있는 한, 8 월까지도 XNB 파일에서 이미 컴파일 된 스프라이트 글꼴을로드하는 것이 지원됩니다. 이러한 XNB 파일을 생성하기 위해 XNA를 설치하지 않으려면 코드 플렉스에서 XNA Content Compiler Project 를 확인하십시오 .

다음은 예제 .spritefont파일이므로 현재 지원되는지 확인할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<!--
This file contains an xml description of a font, and will be read by the XNA
Framework Content Pipeline. Follow the comments to customize the appearance
of the font in your game, and to change the characters which are available to draw
with.
-->
<XnaContent xmlns:Graphics="Microsoft.Xna.Framework.Content.Pipeline.Graphics">
  <Asset Type="Graphics:FontDescription">

    <!--
    Modify this string to change the font that will be imported.
    -->
    <FontName>Arial</FontName>

    <!--
    Size is a float value, measured in points. Modify this value to change
    the size of the font.
    -->
    <Size>10</Size>

    <!--
    Spacing is a float value, measured in pixels. Modify this value to change
    the amount of spacing in between characters.
    -->
    <Spacing>0</Spacing>

    <!--
    UseKerning controls the layout of the font. If this value is true, kerning information
    will be used when placing characters.
    -->
    <UseKerning>true</UseKerning>

    <!--
    Style controls the style of the font. Valid entries are "Regular", "Bold", "Italic",
    and "Bold, Italic", and are case sensitive.
    -->
    <Style>Regular</Style>

    <!--
    If you uncomment this line, the default character will be substituted if you draw
    or measure text that contains characters which were not included in the font.
    -->
    <!-- <DefaultCharacter>*</DefaultCharacter> -->

    <!--
    CharacterRegions control what letters are available in the font. Every
    character from Start to End will be built and made available for drawing. The
    default range is from 32, (ASCII space), to 126, ('~'), covering the basic Latin
    character set. The characters are ordered according to the Unicode standard.
    See the documentation for more information.
    -->
    <CharacterRegions>
      <CharacterRegion>
        <Start>&#32;</Start>
        <End>&#126;</End>
      </CharacterRegion>
    </CharacterRegions>
  </Asset>
</XnaContent>

현재 (2012 년 12 월 25 일-merry xmas!), 스프라이트 폰트는 아직 monogame 3.0에서 지원되지 않습니다. 방금 당신의 지시에 따라 시도했습니다.
Khôi

XNA Content Compiler도 나에게 실행되지 않습니다. 컨텐츠 컴파일러를 실행하려면 XNA가 설치되어 있어야합니다. XNA Content Compiler는 .xnb 파일을 컴파일하기 위해 백그라운드에서 XNA를 사용하여 더미 프로젝트를 빌드합니다.
Khôi

@ Khôi 메리 크리스마스도 당신에게 :). 프로젝트에 XNA가 설치되어 있어야한다는 것이 이상합니다. 대부분의 시나리오에는 유용하지 않습니다!
Roy T.

이상하지도 않고 쓸모가 없습니다. MonoGame은 Android와 같은 다른 플랫폼을 지원하기 위해 자체 컨텐츠 파이프 라인이 필요합니다. 이것은 임시 xrutch입니다. XNA 콘텐츠 파이프 라인을 피기 백합니다.
ashes999

2

추가를 설치하지 않고도이 작업을 수행 할 수 있습니다. 새로운 MonoGame 프로젝트에는 Content.mgcb파일 이 있어야 합니다. MonoGame Pipeline 앱이 나타납니다. Content트리 에서 노드를 마우스 오른쪽 버튼으로 클릭 하고 새 항목을 추가 할 수 있습니다 . `SpriteFont Description '을 선택하십시오. 올바르게 컴파일되고 코드에로드 할 수 있어야합니다.


감사합니다! 나는 몇 시간 동안 찾고 있었고 심지어 WIndows 10 (재해!)에 VS2010 & XNA를 설치하려고 시도했습니다. 다른 사람이 이것을 찾으려면 다음 단계는 방금 만든 .spritefont 파일을 텍스트 편집기에서 열고 기본 'arial'에서 원하는 글꼴로 수정하는 것입니다.
VenerableAgents 2018 년

더 많은 자습서가이 단계를 제공하지 않는 이유를 이해하지 못합니다! 하루 종일보고 난 후에는 아무것도 찾지 못했습니다. 파이프 라인이 당신을 위해 간과하는 것은 매우 쉬운 일입니다.
VenerableAgents

1

이것을 확인하십시오 .MonoGame에서 사용하기 위해 * .spritefont 파일을 .xnb로 컴파일했습니다. 나에게 유일한 방법이었습니다.

그것을 확인하고 당신을 도울 수도 있습니다. http://xnacontentcompiler.codeplex.com/


1

가장 좋은 대안은 XNA를 통해 글꼴 xnb를 미리 생성 한 다음 Monogame for Windows 프로젝트에서 글꼴을 사용하거나 Window를 얻는 오래된 트릭을 수행하는 것입니다 .Handle and the screen coordinates ScreenToClient 그런 다음 GDI를 사용하여 텍스트를 그립니다 System.Drawing.dll과 함께.


0

나는 이것을 해결하기 위해 며칠 동안이 일을 해 왔으며 결국에는 일을해야합니다. 내가 일하고있는 것은 Windows8, VS2012, MonoGame입니다. "monoGame Windows OpenGL Pjoject"로 추가해야합니다.

내가 취한 단계를 안내해 드리겠습니다. 1. VS2012 용 monGame을 설치했습니다. 2. WindowsPhone SDK8을 설치했습니다. 3. VS2010 용 XNA 4.0을 설치했습니다.

이 모든 단계가 nessecery인지 모르겠습니다 ....

그럼에도 불구하고 vs2012에서 .spritefont를 생성 할 수 없습니다 vs2010에서 spriteFont 파일을 생성 한 다음 vs2012 프로젝트에 i를 추가했습니다 ....하지만 작동하지 않았습니다. 그리고 오늘 아침에 해당 .spritefont 파일의 URL이 잘못되었음을 알았습니다. 솔루션 explorer..content-> 기존 항목 추가 ...를 통해 추가했을 때 URL이 잘못되었습니다. "C : \ Users \ admin \ Documents \ Visual Studio 2012 \ Projects \ MyGame \ MyGame \ Content"이것은 vs2012가 내 * .spritefot 파일을 찾는 위치가 여기에 없습니다 ..--> "C : \ Users \ admin \ Documents \ Visual Studio 2012 \ Projects \ MyGame \ MyGame \ bin \ WindowsGL \ Debug \ Content" manully, 와우 작동했습니다. 여기에 코드를 붙여서 내가 한 일을 더 잘 볼 수 있습니다. 내 게임 클래스 내에서 이러한 변수를 넣습니다.

    SpriteFont myFont;
    int score;

VS에 의해 자동 생성 된 내 loadcontent 메소드에서

    myFont = Content.Load<SpriteFont>("test");

VS에 의해 자동 생성 된 드로우 방법에서

         spriteBatch.Begin();
     spriteBatch.DrawString(myFont, "Score: " +score, new Vector2(20,10),Color.Red);
        spriteBatch.End();

그런 다음 오른쪽 폴더에 내 스프라이트 글꼴 파일을 manully 추가했습니다.

이상한 점은 내가이 방법으로 사진을 추가하고 올바른 폴더에 있지만 * .spritefont가 아니라 결국 폴더에 추가해야한다는 것입니다. 나중에 작업하려면 ..

나는 이것이 마지막 날에 가장 큰 두통을 줬기 때문에 이것의 일부가 누군가에게 의미가 있기를 바랍니다. 나는 몇 가지 단계를 잊어 버렸을 수 있으며이 모든 것이 쓸모가 없을 수도 있지만, 나는 거기에서 일부 두통을 완화 할 수 있기를 바랍니다.

그리고이 문제를 해결하기 위해 monoGame이 업데이트되기를 바랍니다.


0

XNB Builder 를 사용 하여 수동으로 .xnb파일 로 변환했습니다 . 간단히 앱을 실행하고 파일을 선택하면 MonoGame에서 사용할 수있는 XNB 파일로 변환됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.