質問: 0;//ゲーム時間を最初に戻す Destroy(gameObject); } GameObject.Find("Canvas").GetComponent().AddScore();//得点プラス } } } } ``` 以上がコードとなります。 ### 試したこと ・FPSのターゲットを60に設定 →効果はあったが、(shot_time > 100 && shot_time < 1200)の処理中にFPSが100を超える。 ・クオリティ設定を低く変更 →効果の実感なし
回答: 原因を見つけたい場合はMemory Profilerを使いましょう。 実機とつなげて確認すればどこで処理が跳ね上がっているか見ることができます。(スクリプト側の負荷なのか、グラフィック側の負荷なのかなど) もしくは一旦機能をオミットするのも手です。ボスが弾を撃ってこない設定で動かしたら軽くなるかを確認します。 ひたすらインスタンス化しているのが問題なようだったら この手のゲームでまず思いつくのは弾のオブジェクトプールです。ひたすらインスタンス化するのではなく必要な分だけ作ってあとは使い回すやり方になります。 画面外に出たものや、なにかにあたったものはDestroyするのではなく非表示にして保管しておきます。弾をインスタンス化する際に保管してある弾があればそちらを再利用するという考え方です。 第01回 オブジェクトプーリング