0

Box2d オブジェクトには void* m_userData 、ユーザーがデータを保存できるフィールドがあります。通常、別のオブジェクトへのポインターを保存します。たとえば、システムティックごとに位置情報で更新されるスプライトへのポインターです。

別のオブジェクトへのポインターを格納したいのですが、もう 1 つ余分な情報を格納できれば幸いです。ポインタの最上位ビットでそれを行うことはできますか? オブジェクト ポインタの最上位ビットを設定できますか? つまり、内部メモリは 512 MB しかありません (推測)。

これが原因でアプリが拒否される可能性がありますか?それは完全に将来を保証するものではなく、ちょっとしたハックです...

4

1 に答える 1

0

「別のオブジェクト」へのポインターは好きなものにすることができるため、これを行う典型的な方法は、ユーザーデータに保存したいものを保持する構造体/クラスを作成することです。

struct myUserData {

    Object* anObject;
    AnotherObject* anotherObject;
    bool oneExtraBit;//okay, 8 extra bits :)

}

次に、これらのいずれかをユーザーデータとして設定します...

myUserData* mud = new myUserData;
mud->anObject = ...;
mud->oneExtraBit = ...;
myBody->SetUserData( mud );
于 2012-09-08T19:12:41.487 に答える