重新创建先前放置的Box2DLights光源时,LibGDX“ EXCEPTION_ACCESS_VIOLATION”错误

时间:2019-12-13 13:58:06

标签: exception libgdx box2d box2dlights

我刚刚为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();

错误日志: https://pastebin.com/1v36aNPg

0 个答案:

没有答案