我正在通过项目和教程学习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方法会是正确的位置吗?
答案 0 :(得分:3)
您应该明确 在new
循环中使用大量render
。在桌面上这不是一个大问题,但在手持设备上,这将经常调用垃圾收集器,这将导致游戏玩法的滞后。
无论是在属性声明中执行,还是在create
中都没有产生重大影响。两者都只在应用程序的生命周期中完成一次。