我使用新游戏,我为现实世界创建了2个相机一个相机,为静态分辨率创建了另一个(GUI)相机(800 x 480)
fitViewPort=new FitViewport(Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
gameController.stage=new Stage(fitViewPort);
我想在游戏中使用textButton,所以我使用新的fitViewPort创建了一个新的舞台
static async Task getAllRecords()
{
var builder = Builders<HeavyMetalRecordDocument>.Filter;
//var filter;
using (var cursor = await ThrashMetalDocumentsCollection.Find()
.Sort(Builders<HeavyMetalRecordDocument>.Sort.Ascending(x => x.rating))
.ToCursorAsync())
{
while (await cursor.MoveNextAsync())
{
foreach (var doc in cursor.Current)
{
//Do Something…
}
}
}
}
public class HeavyMetalRecordDocument
{
public ObjectId Id { get; set; }
public String artist { get; set; }
public String title { get; set; }
public DateTime releaseDate { get; set; }
public int rating { get; set; } // 1-10
}
然后我使用我的位图字体创建我的textButtons,我在桌面上尝试它,这很棒 desktop
但是当我尝试其他设备时,位置不一样 Tablet
然后我认为使用cameraGui宽度和高度为我的视口,字体是非常糟糕的拉伸
任何帮助请:(
答案 0 :(得分:0)
请勿为GUI创建特殊相机,因为视口已有相机。
根据您的情况确定视口宽度和高度:
fitViewPort = new FitViewport(800, 480);
gameController.stage = new Stage(fitViewPort);
然后只需将actor添加到舞台并通过调用方法
绘制它gameController.stage.draw();
注意:请务必在调整大小方法中添加gameController.stage.getViewport().update(width, height);
。
编辑:使用小的固定视口(800x480很小)会导致缩放,这就是字体被拉伸的原因。例如,如果您在1920x1080显示器上运行800x480布局,它将缩放225%。
您可以做的是生成一个大尺寸的字体,并设置其数据fe的缩放比例。 bitmapFont20.getData().setScale(0.5F);
(在这种情况下,字体由FreeTypeFontGenerator生成,大小为40)。使用这个技巧你将获得很好的结果。证据如下。它是640x360F * (float) Gdx.graphics.getHeight() / (float) Gdx.graphics.getWidth()
的视口,缩放到1920x1080。生成大小为72的字体,然后将数据比例设置为0.5F
这是相同的文字,但未修改数据比例。