1

最適化に関する前回の質問に続いて、ゲームのパフォーマンスを向上させるためにコードをさらに最適化することは不可能であると信じやすくなっています。

だから今、私は新しいアイデアを思いついたので、それを実装することが可能か、あるいは価値があるかどうかを知りたい. パフォーマンスの明確なボトルネックは .net ベースの物理処理によるものであるため、Objective-C または C++ ベースの物理エンジン (box2D など) に適合して Mono と対話することは可能でしょうか?

たとえば、Mono コードでは CreateBox() のようなことを行いますが、舞台裏では Obj-C/C++ でボックスが作成されます。または、物理演算の更新を行うときは、Mono で関数を呼び出すだけで、Obj-C/C++ で直接的な作業が行われます。

これが可能であれば、誰かが私を正しい方向に向けて始めることができますか?

4

1 に答える 1

3

はい。

これを行うには、C API と Objective-C API を使用する 2 つの方法があります。

C API を使用して、ネイティブ コードを C (または C++ with extern "C") で記述し、コードをスタティック ライブラリにコンパイルし、MonoTouch アプリをスタティック ライブラリにリンクしてから、P/Invoke を使用して C 関数にアクセスします。ただし、ライブラリ名を指定する必要がある「通常の」P/Invoke とは異なり、ライブラリ名として指定する必要があります"__Internal"

[DllImport ("__Internal")]
static extern void MethodInStaticLibrary ();

System.dllこれと同じ手法が、MonoTouch によって、MonoTouch ランタイムなどから呼び出すために使用されます。

Objective-C の使用は同じですが、異なります。C ABI をエクスポートするスタティック ライブラリの代わりに、Objective-C ABI をエクスポートするスタティック ライブラリが必要です。スタティック ライブラリにリンクし、Objective-C ライブラリの API バインディングを提供します

于 2011-07-07T14:03:52.603 に答える