私はLibgdxでBox2dを使って自分の世界を作り始めました。異なるゲームオブジェクト用の形を作成しなければなりません。私が読んだチュートリアルでは、私がそれらを使ってやったときに私の形を処分すべきだと言いました。box2dシェイプを正しく処分する方法は?
private CircleShape circle;
private PolygonShape ground;
private PolygonShape wall;
private PolygonShape box;
//...
//(getters)
そして、そのように私のオブジェクトを配置する:
だから、私はそのような参照を保ち始め
@Override
public void dispose()
{
circle.dispose();
ground.dispose();
wall.dispose();
box.dispose();
world.dispose();
}
私は拡張のためのリストにこれを変更することを決めたが、問題がどこかにあります私のコードでは、クリック時にボディを追加するので、外部クラスからいくつかの図形にアクセスできるようにする必要があります。私は余分な形を作り、私のリストにアクセスできるようになりましたが、私は使い捨てオブジェクトの巨大なリストを作成するという考えが嫌いです。
解決策は、シェイプの内部リストを持つShapeManagerオブジェクトを作成することです。私はこのオブジェクトを処分することができ、必要に応じて既存のシェイプを返すシェイプコンストラクタをラップします。
ただし、このソリューションは重すぎるようです。なぜBox2d(またはLibGDX)が配置する必要があるシェイプオブジェクトを作ったのですか?私が既にLibGDXに含まれているようなクラスがありますか?より良い解決策はありますか?