我正在尝试使用粒子效果,但在应用程序启动之前,我遇到了与此任务相关的错误。
这就是我设置它的方式:
private ParticleEffect particle;
@Override
public void create(){...
ParticleEffect particle = new ParticleEffect();
particle.load(Gdx.files.internal("data/effects/flame1"), Gdx.files.internal("data/effects"));
particle.setPosition(Gdx.graphics.getWidth() /2, Gdx.graphics.getHeight() /2);
particle.start();
.........}
@Override
public void render(){...
spriteBatch.begin();
particle.draw(spriteBatch, Gdx.graphics.getDeltaTime());
spriteBatch.end();
请注意,我的粒子效果文件和相应的源图像文件位于数据/效果文件夹下。我注意到我从粒子效果编辑器保存的粒子效果文件似乎不是.p文件类型。相反,它似乎只是'文件'类型。也许这是错误的可能原因?
错误:
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.name.appname.GameClass.render(GameClass.java:111)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
java:111是:
particle.draw(spriteBatch, Gdx.graphics.getDeltaTime());
答案 0 :(得分:5)
再看看这个:
private ParticleEffect particle;
@Override
public void create(){...
ParticleEffect particle = new ParticleEffect();
这称为 shadowing 。您不小心创建了一个相同类型且具有相同名称的新局部变量,并实例化该变量而不是您的类的字段。
将其更改为:
private ParticleEffect particle;
@Override
public void create(){...
particle = new ParticleEffect();