06
2018
05

Box2d中的同步问题

无论纯Java版还是Libgdx版的BOX2D,很多朋友都遇到过卡死、报错。

其实BOX2D内部是不同步的,特别是创建和销毁刚体方法,在调用的时候一定要注意同步,比如:

     synchronized (box2dLock)

     {

            return world.createBody(def);

     }

    synchronized (box2dLock)

     {

            world.destroyBody(rigid.getBody());

            rigid.doClear();

     }

另外,body从world销毁以后,可能你的代码中还有逻辑访问这个body,会触发非常难排查的错误。

所以尽量在body销毁后,手动将body引用设为null,只要引用到不存在的body,就会触发空指针错误,这样要容易排查得多。

« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。