2

現在、C# .net XNA ゲーム エンジンを開発しています。

エンジンの設計について質問がありました。まず第一に、エンジンに独自のスクリプト言語を組み込むことができるようにしたいと考えています。そのためには、ゲーム内のすべてのオブジェクトのすべてのプロパティ、または変更したいオブジェクトだけにアクセスできる必要があると考えていました。

私が最初にやり始めたのは、文字列でアクセスできるようにすることです。そのために、画面に描画できるすべての「エンティティ」に、すべてのプロパティのディクショナリを持たせました。プロパティの追加は、Entity クラスで手動で行われました。それ以来、多くの辞書があり、それらの辞書があまり多くない場合、GC が遅くなる可能性があることを読みました。それが私のゲームで今起こっていることだと私は信じています。fps を失い始める前に、色、位置、テクスチャなどの基本的なプロパティを持つエンティティを最大約 1000 個しか取得できません。

辞書よりもさらに遅いため、私が行っていることやリフレクションを使用する以外に、その場でオブジェクトのプロパティに動的にアクセスできる他の方法があるかどうか疑問に思っていました。それとも、デザイン全体を再考する必要がありますか?

4

2 に答える 2

2

ランタイムコンパイルを調べて、C#を使用してスクリプトを作成することができます。スクリプトへの標準インターフェースを定義すると、これと同様に、エンジンの実行中にスクリプトを読み取り、コンパイルして実行できます。

于 2010-07-09T00:51:38.150 に答える
2

これと似たようなことをしましたが、Java を使用し、JavaScript をスクリプト言語として使用しました。

私がそれを機能させた方法は、基本的にオブジェクトをスクリプト言語に直接公開することでした。クラスのメソッドをスクリプト言語から直接呼び出すことができるはずなので、奇妙な動的プロパティのハックを実装する理由がわかりません。

于 2010-07-09T00:31:58.157 に答える