我刚刚为LibGDX安装了Box2DLights依赖项,并在其中添加了一个带有2个ConeLights的洞穴。我第一次绘制洞穴时,一切都按预期进行。然后,当我退出洞穴时,请确保dispose()
点亮所有灯光。然后,如果我再次进入山洞并尝试创建相同的2个ConeLights,它会给我这个异常,并带有一个大错误日志(此文章底部添加了PasteBin)。如果我在离开洞穴时不dispose()
开灯,它不会第二次崩溃,但是它将不断添加灯光,并且会变得越来越亮,这对性能不利。不管我使用PointLight还是ConeLight,都会发生相同的异常。
每次地图更改发生时,都会调用destroyLighting()
,然后调用新地图的loadLighting()
。错误是在创建ConeLight时发生的,这是您第二次进入洞穴时(loadLighting()方法的第4行)
loadLighting():
for(MapObject o : lightingObjects) {
EllipseMapObject circleMapObject = (EllipseMapObject) o;
Ellipse ellipse = circleMapObject.getEllipse();
Light light = new ConeLight(rayHandler, 60, new Color(255,225,166,1), 100, ellipse.x, ellipse.y, 90, 90);
light.setSoftnessLength(0);
lights.add(light);
}
destroyLighting():
for(Light light : lights) light.dispose();
lights.clear();