以下代码会导致我的游戏循环出现性能问题吗

would the following code cause performance issues in my game loop

我有一个游戏循环,不断调用它来更新游戏。在该循环内是以下代码:

mySurfaceView.post(new Runnable() {
            public void run() {
                myView.setTranslationX(myCam.getX());
                myView.setTranslationY(myCam.getY());

            }
        });

有人告诉我,将 "new" 关键字放入我的游戏循环通常不是一个好主意,因为内存会不断分配给新对象。然而,这是一个匿名的内部 class,所以我不确定这里是否同样适用。此代码会导致性能问题吗?如果是这样,那么我将如何解决它们?当他移动时,我使用此代码使我的屏幕围绕我的玩家定向。

一种方法是向 UI 线程上的处理程序发送消息,而不是发布 Runnable。如果您的翻译 X/Y 值是整数,这是最简单的。

例子见Grafika"record GL app"activity中ActivityHandler的使用方式。 UI 线程创建一个新的 Handler 并将其传递给渲染器线程,渲染器线程向其发送消息。 handleUpdateFps() 是一个很好的例子,因为它将一对整数传递给 UI 线程。

如果不能将值作为定点传递,则必须通过对象传递它们,事情开始变得复杂起来。总的来说,这种方法比简单地发布一个 Runnable 更复杂。

(更好的方法是在内部调整你的坐标,有一个 "world space" 和 "screen space" 的概念,而不是混淆视图的值。但是看看你的其他问题,你尝试了这种方法但没有成功。)