2011-07-03 6 views
0

私のゲームはGCのために吃音しており、40msから140msの範囲です。 私のゲームは新しいオブジェクトや更新スレッドやレンダリングスレッドに何も作成していないので、私のプロジェクトがきれいであることは確かです。 更新方法私はList<TouchEvents> touchEvents = getTouchEvents(); を持っています。これはGCがGCとして蹴り出す原因になっていると確信しています。(ACTION_MOVEイベントを使用して)画面に触れる必要があるため移動するたびに動きます。 これを最適化または防止するにはどうすればよいですか?Androidタッチイベントリストとガベージコレクタ

編集: 今、私はFPS制限方法と関連があると考え始めています。 私はFPSを30に制限しているので、GCにはゲームに干渉することなく十分な時間がないと仮定しています。 リミッターをオフにして60FPSでゲームを走らせた後、私はこの理論を思いつきました。 60FPSで動作しているのに30FPSで動作していないと、ゲームは完璧にスムーズになります。 アイデア

+0

*ゲームロジックスレッド*、または*レンダリングスレッド*か多分*両方を制限していますか? – Wroclai

+0

正直言ってわかりません。私はFPSを制限する方法をオンラインで調べ、試してみたときにうまくいく方法を実装しました。基本的に新しいスレッドでは、スリープ時間を作成し、 "if文"を使用してスリープ時間が33より大きいかどうかをチェックし、スリープ時間を引数としてスレッドをスリープ状態にします。 if文の後、私は現在の画面の更新とレンダリングのメソッドを呼び出します。 – semajhan

+0

さて、まずは、ゲームは30 FPSで吃音になります。より高いFPSで動作させたくない理由がありますか?両方のスレッドを制限しているように聞こえます。この場合、レンダリングロジックとゲームロジックの両方が30 FPSで更新されます。私はゲームのロジックループに少なくとも100FPSを推奨しています。できるだけ早くレンダリングループを実行させるべきです(Androidの画面がV-syncedなので、基本的には60FPSです)。 – Wroclai

答えて

0

個人的には、fpsをキャッピングすることはお勧めしません。代わりに、できるだけ速く走り、動きや物理をするときの経過時間を参照してください。

関連する問題