我在用libgdx围绕事物的实际显示方面时遇到了一些困难。也就是说,为了实际将某些东西放到屏幕上,它在需要做什么方面似乎相当混乱。我想我的困惑可以分为两部分:
在创建图像方面究竟需要做些什么?有 纹理,TextureRegion,TextureAtlas,Sprite,Batch,也许是一个 我缺少的其他一些艺术相关资产。这些都是怎么做的 相互联系并相互联系?什么是“生产链”之中 这些我认为是一种放置它的方式。
在推杆方面 从上面的东西创建的任何东西到显示器或 显示,不同的坐标和尺寸测量方法如何相关 并相互翻译?说有一些图像X 我想要放在屏幕上。 IT拥有自己的维度和维度 坐标,但那时还有一个视口大小(有一个 视口位置?)和摄像机位置(摄像机大小?)。 最重要的是,还有整体显示的大小 来自Gdx.graphics。我可能想做的一些例子可以 如下:
很抱歉,如果那是一堆东西...我猜第二部分的tl; dr是我应该做的所有事情的位置/坐标,大小和尺度的哪一组?
我知道这可能会立刻问到很多,而且我也知道大部分这些东西都可以在网上找到,但经过教程后的教程筛选后,我似乎无法直截了当地回答如何这些都是彼此相关的。任何帮助将不胜感激。
答案 0 :(得分:3)
希望我不会增加混乱,但我真正喜欢的另一个选项是在“Sprite”和“SpriteBatch”类中使用“Actor”和“Stage”类。 Actor与Sprite类似,但通过act方法添加了移动/动画的附加功能。舞台取代SpriteBatch,因为它使用自己的内部SpriteBatch,因此您不需要显式使用SpriteBatch。
还有一整套UI组件(表格,按钮,文本字段,滑块,进度条等)都基于Actor并与舞台配合使用。
我无法真正帮助解决问题2.我坚持使用基于UI的应用程序,所以我不知道使用大型游戏世界的最佳实践。但希望在该领域更有知识的人可以帮助你。
答案 1 :(得分:2)
这很长时间以回复作为评论,所以我作为另一个答案作出回应......
我认为Sprite / SpriteBatch和Actor / Stage都同样强大,因为你仍然可以使用Sprite / SpriteBatch进行动画和移动,但是Actor / Stage更容易使用。舞台有两个叫做“act”和“draw”的方法,它允许舞台更新并很容易地绘制它包含的每个演员。您可以覆盖每个actor的act方法,以指定您希望它执行的操作类型。使用示例代码查找Stage / Actor的一些不同教程,并且应该清楚如何使用它。
另外,在“Actor”等同于Sprite之前,我有点不正确,因为Sprite包含一个纹理,但Actor本身没有任何类型的图形组件。有一个名为“Image”的Actor的扩展,其中包含一个Drawable,因此Image类实际上等同于Sprite。 Actor是提供用于执行(或“更新”)的方法的基类,但它不必是图形的。我已将Actors用于其他目的,例如在特定时间触发音频声音。
Atlas创建包含所有png文件的大型纹理,然后允许您从中获取单个png的区域。因此获取特定png图形的管道将是Atlas>区域>雪碧/图像。 Image和Sprite类都有一个带有区域的构造函数。