我在以相同的大小在不同的屏幕上显示游戏文本时遇到问题,我做了一个简单的测试。
该测试包括在屏幕上显示适合的文本,我希望文本的大小与屏幕和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();
}
}
我正在尝试找到一种整齐的方法来解决此问题。我做错了什么?是相机吗?视口?
更新:
我想要的是与屏幕尺寸或分辨率无关地保持相同的边距。此图说明了我的意思。
您是希望物理尺寸保持不变(计算机上2厘米文字=移动设备上2厘米tekt)还是使文字适合显示屏?
—
Eejin 2014年
我不确定您在这里问什么。您发布的那些链接似乎可以回答这个问题。您必须注意显示尺寸和DPI。请详细说明您的问题,以便正确回答。
—
Katu 2014年
我会试试看。我想要的是在不同的屏幕尺寸或分辨率之间保持相同比例的文本。我的意思是,在电影院中,屏幕的厘米尺寸显然会更大,但比例上会有相同的边距。因此,@ Eejin所说的不完全是。我用显示我的意思的图像更新了帖子。
—
的Iñaki贝多亚