ゲームのテキストを同じサイズで別の画面に表示するのに問題があり、簡単なテストを行いました。
このテストは、画面にテキストフィッティングを表示することで構成されています。画面やDPIから独立して、テキストのサイズが同じである必要があります。
私はこれとこの答えを見つけましたが、私の問題は解決するはずですが、解決しません。デスクトップではサイズは大丈夫ですが、私の電話では大きすぎます。
これは私のNexus 4での結果です(768x1280、2.0密度)
そして、これは私のMacBookの結果です:(480x800、0.6875密度)
Open Sans Condensedを使用しています(Googleフォントへのリンク)
ご覧のとおり、デスクトップは見栄えが良いですが、電話ではとても大きいです。
ここに私のテストのコード:
public class TextTest extends ApplicationAdapter
{
private static final String TAG = TextTest.class.getName();
private static final String TEXT = "Tap the screen to start";
private OrthographicCamera camera;
private Viewport viewport;
private SpriteBatch batch;
private BitmapFont font;
@Override
public void create ()
{
Gdx.app.log(TAG, "Screen size: "+Gdx.graphics.getWidth()+"x"+Gdx.graphics.getHeight());
Gdx.app.log(TAG, "Density: "+Gdx.graphics.getDensity());
camera = new OrthographicCamera();
viewport = new ExtendViewport(Gdx.graphics.getWidth(), Gdx.graphics.getWidth(), camera);
batch = new SpriteBatch();
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/OpenSans-CondLight.ttf"));
font = createFont(generator, 64);
generator.dispose();
}
private BitmapFont createFont(FreeTypeFontGenerator generator, float dp)
{
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
int fontSize = (int)(dp * Gdx.graphics.getDensity());
parameter.size = fontSize;
Gdx.app.log(TAG, "Font size: "+fontSize+"px");
return generator.generateFont(parameter);
}
@Override
public void render ()
{
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
int w = -(int)(font.getBounds(TEXT).width / 2);
batch.setProjectionMatrix(camera.combined);
batch.begin();
font.setColor(Color.BLACK);
font.draw(batch, TEXT, w, 0);
batch.end();
}
@Override
public void resize(int width, int height)
{
viewport.update(width, height);
}
@Override
public void dispose()
{
font.dispose();
batch.dispose();
}
}
私はこれを修正するためのきちんとした方法を見つけようとしています。私は何を間違っていますか?カメラですか?ビューポート?
更新:
私が欲しいのは、画面サイズや解像度に関係なく、同じマージンを一定に保つことです。この画像は私が何を意味するかを示しています。
物理的なサイズを同じにしたいですか(コンピューターでは2cmのテキスト==モバイルでは2cm tekt)、またはテキストをディスプレイに合わせますか?
—
Eejin、2014年
ここで何を求めているのか、完全にはわかりません。あなたが投稿したリンクはこの質問に答えるようです。ディスプレイのサイズとDPIに注意する必要があります。正しく答えられるように、質問を詳しく説明してください。
—
Katu
私はそれを試してみます。私が欲しいのは、異なる画面サイズや解像度でも同じ割合のテキストを維持することです。つまり、映画の画面では、明らかにcm単位でサイズが大きくなりますが、比率は同じマージンになります。つまり、@ Eejinが言ったこととまったく同じではありません。私は自分の意味を示す画像で投稿を更新しました。
—
イニャキベドヤ2014年