0

現在、ゲームのプログラミングを行っています。現在、ループを使用してゲーム内の複数の「オブジェクト」を置き換えようとしています。

「オブジェクト」と言うとき、OOP のオブジェクトではなく、バッファに描画されるゲーム内の単純なエンティティ (例: 岩や木) を指しています。

オブジェクトを置き換えるこの方法は、数個のオブジェクトであれば問題なく機能しますが、最大 25 個以上のオブジェクトを置き換えようとすると、少し奇妙に見えます。

つまり、すべてのオブジェクトが一度に置き換えられるのではなく、一度に 1 つずつ置き換えられていることがわかります。(タスクがループで実行されるためだと理解しています)

これは、私がプログラムで行っていることをほぼ要約しています。

for(int i = 0; i < tilesToReplace; i++) //Looping through the total amount of tiles that will be replaced
//Spawning an object in the desired tile
spawnObject(objectPatch.objectId, //irrelevant, (new object ID)
        objectPatch.coords[0][i], //irrelevant, X Coordinate of the current index
        objectPatch.coords[1][i]); //irrelevant, Y Coordinate of the current index

置き換えたいすべてのオブジェクトが初期化されるまでエンティティのレンダリングを一時停止するなどのことはすでに考えていますが、ループを処理する方法など、これを行うより簡単な方法があるかどうか疑問に思っています気づいていません。(オブジェクト/レンダリング処理などで行うことができる変更を実際に目指しているわけではありません。)

4

2 に答える 2

0

この例N = 10;で試しました。100 個のラベルを置き換えると、まだ同時に表示されます。問題はプログラムの別の場所にあり、コードをプロファイリングしてその場所を確認する必要があります。一般的な原則として、イベント ディスパッチ スレッドでのアクティビティをできるだけ短くするようにしてください。たとえばsscceは、役に立つ演習になる可能性があります。

于 2012-09-21T01:14:23.820 に答える
0

C++ で開発している場合、画面バッファリングをセットアップする方法があります。次の画面バッファ (表示されていないもの) で変更を処理します。処理が完了したら、そのバッファを表示するように画面を切り替えます。

C または C++ を使用していますか。これは、ゲームが C でうまく機能する理由の例です。

于 2012-09-21T01:38:59.827 に答える