私は愚かなことをしたのに気づかないようだと真剣に賭けています。
package com.me.mygdxgame;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
public class Locked implements ApplicationListener
{
private OrthographicCamera camera;
private SpriteBatch batch;
private Texture texture;
private Sprite sprite;
private BitmapFont font;
private CharSequence str = "Hello World!";
private float width;
private float height;
@Override
public void create()
{
width = Gdx.graphics.getWidth();
height = Gdx.graphics.getHeight();
camera = new OrthographicCamera(1, height / width);
batch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("data/libgdx.png"));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
TextureRegion region = new TextureRegion(texture, 0, 0, 512, 275);
Sprite = new Sprite(region);
Sprite.setSize(0.9f, 0.9f * Sprite.getHeight() / Sprite.getWidth());
Sprite.setOrigin(Sprite.getWidth() / 2, Sprite.getHeight() / 2);
Sprite.setPosition(-Sprite.getWidth() / 2, -Sprite.getHeight() / 2);
font = new BitmapFont(Gdx.files.internal("data/digib.fnt"),
Gdx.files.internal("data/digib.png"), false);
}
@Override
public void dispose()
{
batch.dispose();
texture.dispose();
}
@Override
public void render()
{
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
font.setColor(0.0f, 0.0f, 0.0f, 1.0f);
//Sprite.draw(batch);
font.draw(batch, str, width*0.5f, height*0.5f);
batch.end();
}
@Override
public void resize(int width, int height)
{
}
@Override
public void pause()
{
}
@Override
public void resume()
{
}
}
プロジェクトは、彼らが提供するテンプレートツールを使用して生成されましたgdx-setup-ui.jarコードでわかるように、私はわざわざ取得する必要はありませんでしたデフォルトのコードを取り除きます(LibGDXロゴをレンダリングするためのいくつかの単純な描画コード)。
だから、きれいに生成されたプロジェクトで、私はここでこのガイドに従いました http://code.google.com/p/libgdx-users/wiki/addingText2D
そして最後に、上記の提供されたコードで到着します。
問題は、なぜ!@#$ ingテキストが表示されないのかということです!?私は何度も位置を変えましたが、それでも運がありません:\
私は何か見落としてますか?
FYI:フォントは問題ありません。別のゲームにドロップすると、機能します。
次のように射影行列を変更してみてください。
Matrix4 normalProjection = new Matrix4().setToOrtho2D(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
batch.setProjectionMatrix(normalProjection);
私がするのは
spriteBatch = new SpriteBatch();
font = new BitmapFont(Gdx.files.internal("data/nameOfFont.fnt"),
Gdx.files.internal("data/nameOfFont.png"), false);
とrenderメソッドで
spriteBatch.begin();
font.setColor(1.0f, 1.0f, 1.0f, 1.0f);
font.draw(spriteBatch, "some string", 25, 160);
spriteBatch.end();
あなたは私のブログでそれについてもっと何かを読むことができます: http://algorhymes.wordpress.com/2012/11/17/javalibgdx-fonts/
個人的には、すべてのフォントを.fnt形式に変換することはあまり好きではありません。特定のフォントに異なるサイズが必要な場合は、すべての変換を行うために多くの時間(およびアプリスペース)を費やす必要があります。
FreeType拡張機能を使用して、.ttfから直接ロードできます。
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile);
BitmapFont font15 = generator.generateFont(15);
BitmapFont font22 = generator.generateFont(22);
generator.dispose();
詳細 ここ
レンダリングは、watisが説明したのと同じ方法で行われます。
libgdxWebサイトで提供されているhieroを使用して.fntファイルを作成します
フォント150のサイズを設定すると、.fntファイルとpngファイルが作成されます
assestsフォルダー内の両方のファイルをコピーします
フォントを宣言します
BitmapFontフォント;
createメソッドのnw
font = new BitmapFont(Gdx.files.internal( "data/100.fnt")、false); // 100は、フォントに任意の名前を付けることができるフォント名です。
レンダリングで
font.setscale(.2f);
font.draw(batch、 "書きたいものは何でも"、x、y);
これはスムーズに機能します
コードの主な問題は、でカメラを作成したことです
viewportWidth = 1&
viewportHeight =幅/高さ
カメラの範囲外の幅* 0.5fと高さ* 0.5fでフォントを描画しています
カメラの初期化を次のように変更します
camera = new OrthographicCamera(width, height);
....またはdrawfontステートメントをに変更します
font.setScale(1,height/width);
font.draw(batch, str, 0.5f, height/width*0.5f);
このように手動でポジションを与えてみましたか?これがbatch.setProjectionMatrix(camera.combined);で機能することを願っています。 batch.enableBlending(); batch.begin();
font.draw(batch、yourString、100,100);
batch.end();