【发布时间】:2013-09-06 17:31:06
【问题描述】:
我正在通过使用项目和教程来学习 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 方法会是正确的地方吗?
【问题讨论】:
-
在声明属性时不要使用
new,因为有些类,如果我没记错的话,比如SpriteBatch,需要初始化LibGDX的核心类,尤其是Gdx.graphics字段,然后才能被实例化否则会抛出异常。