게임에 다른 화면에서 같은 크기로 텍스트를 표시하는 데 문제가 있으며 간단한 테스트를 수행했습니다.
이 테스트는 화면에 텍스트 맞춤을 표시하기 위해 구성되며 텍스트와 화면 및 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();
}
}
이 문제를 해결하는 깔끔한 방법을 찾으려고합니다. 내가 뭘 잘못하고 있니? 카메라입니까? 뷰포트?
최신 정보:
내가 원하는 것은 화면 크기 나 해상도에 관계없이 동일한 여백을 비례 적으로 유지하는 것입니다. 이 이미지는 내가 의미하는 바를 보여줍니다.