0

我正在通过使用项目和教程来学习 Java、LibGDX、Box2D,我现在正在学习一个教程,我想提出一个关于 render() 循环和 create() 方法的问题。

所以总是先调用 create(),然后调用 render()。如果我正在创建一堆实例,例如:

public class Game implements ApplicationListener {

    World world;
    Box2DDebugRenderer debugRenderer;
    OrthographicCamera cam;
    BodyDef bodyDef;
    CircleShape circle;
    FixtureDef fixtureDef;

我应该在这里使用new构造函数吗?还是我应该在 create() 方法中这样做?

@Override
public void create() {

    world = new World(new Vector2(0, -10), true);
    debugRenderer = new Box2DDebugRenderer();
    cam = new OrthographicCamera(800 / 2, 480 /2);
    bodyDef = new BodyDef();
    bodyDef.type = BodyType.DynamicBody;
    bodyDef.position.set(100, 300);
    circle = new CircleShape();
    circle.setRadius(6f);
    fixtureDef = new FixtureDef();

或者我应该把它放在 render() 方法中吗?

我有点不确定哪个是最好的,在渲染中这样做似乎有点笨拙,这不会导致游戏在每次循环迭代时不断创建新实例导致性能问题吗?

哦,我想问一下,当我定义对象的属性时,例如 circle.setRadius(),create 方法会是正确的地方吗?

4

1 回答 1

3

你不应该new你的render循环中使用很多。在台式机上这并不是什么大问题,但在手持设备上这将过于频繁地调用垃圾收集器,这将导致游戏延迟。

无论您是在属性声明中还是在属性声明中create这样做都没有太大区别。两者都在您的应用程序的生命周期中只完成一次。

于 2013-09-06T09:31:06.137 回答