用于创建实例的Create()或Render()

时间:2013-09-06 09:17:09

标签: java libgdx jbox2d

我正在通过项目和教程学习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方法会是正确的位置吗?

1 个答案:

答案 0 :(得分:3)

您应该明确 new循环中使用大量render。在桌面上这不是一个大问题,但在手持设备上,这将经常调用垃圾收集器,这将导致游戏玩法的滞后。

无论是在属性声明中执行,还是在create中都没有产生重大影响。两者都只在应用程序的生命周期中完成一次。