আমার গেমটিতে বিভিন্ন স্ক্রিনে একই আকারে পাঠ্য দেখাতে আমার সমস্যা হচ্ছে এবং আমি একটি সাধারণ পরীক্ষা করেছি।
এই পরীক্ষায় স্ক্রিনে কোনও পাঠ্য ফিটিং প্রদর্শিত হয়, আমি চাই যে স্ক্রিন থেকে এবং ডিপিআই থেকে পাঠ্য স্বাধীনভাবে একই আকারের হোক।
আমি এই এবং এই উত্তরটি পেয়েছি যা আমার মনে হয় আমার সমস্যার সমাধান করা উচিত তবে তা করা উচিত নয়। ডেস্কটপে আকার ঠিক আছে তবে আমার ফোনে অনেক বড়।
এটি আমার নেক্সাস 4 এ ফলাফল: (768x1280, 2.0 ঘনত্ব)
এবং এটি আমার ম্যাকবুকের ফলাফল: (480x800, 0.6875 ঘনত্ব)
আমি ওপেন সানস কনডেন্সড (গুগল ফন্টের লিঙ্ক) ব্যবহার করছি
আপনি ডেস্কটপে দেখতে দেখতে দেখতে দেখতে দেখতে দুর্দান্ত লাগছে, তবে ফোনে এটি এত বড়।
এখানে আমার পরীক্ষার কোড:
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();
}
}
আমি এটি ঠিক করার একটি পরিষ্কার উপায় সন্ধান করার চেষ্টা করছি। আমি কি ভুল করছি? ক্যামেরা কি? ভিউপোর্ট?
হালনাগাদ:
আমি যা চাই তা হ'ল স্ক্রিনের আকার বা রেজোলিউশনের স্বতন্ত্রভাবে একই মার্জিনটি অনুপাতের মধ্যে রাখা। এই চিত্রটি আমার অর্থ কি তা বোঝায়।