您好我应该这样做:
new BitmapFont().draw("Hello World!");
new BitmapFont().draw("Hello Universe!");
或
BitmapFont font = new BitmapFont();
font.draw("Hello World!");
font.draw("Hello Universe!");
性能是否重要?
答案 0 :(得分:2)
第一个选项不是更糟糕,它根本不是一个选项。它泄漏了记忆。如果您每帧都这样做,您的游戏会在手机上快速崩溃。
任何实现Disposable的东西绝对必须在丢失引用之前处理掉,否则就会泄漏。
对于大多数情况,第二种选择都没问题。如果你有几十个在每一帧上都有相同文本的字符串,你可以使用你从BitmapFont(someStringCache = new BitmapFontCache(bitmapFont);
)创建的BitmapFontCaches,这样每次都不需要重新计算字符串的字形排列你画它。我不会为此烦恼,除非你发现你的游戏的帧率太低而且你已经将问题缩小到了CPU。
答案 1 :(得分:1)
绝对第二个选项更好,因为第一个选项在真正需要1时会创建2个对象。在小规模上这没关系,但是如果所有的Java调用都像第一个那样,垃圾收集器将花费更多的时间(更多的对象 - 更多的时间需要GC),如果构造器上的负载很重,它将显着减慢应用。
对象在内存中,因此需要更多内存的对象需要更多内存,这就是为什么libGDX希望每次实用时都重用相同的Batch对象。
它的可读性和可配置性也较差(如果你需要在BitmapFont中设置一些东西,最好这样做一次)。
您还应该检查实现Disposable
的对象,您必须手动处理它们。 BitmapFont,Batch,Stage,Texture。