質問: -0.5f; z < 0.6f; z += 0.1f) { Instantiate(particle, new Vector3(x, y, z), Quaternion.identity); } } } ``` コメントにも書いてある通り、計算量のことなんて考えずに増やせると思っていたのですが、これがなぜか急に処理が重たくなり、動かなくなったわけです。 ### 試したこと 調子に乗ってループを回しすぎたのかと思い、ちょっとずつ粒子数を減らしていったのですが、どんだけ減らしてもまともに動く気配がありませんでした。最終的に、1個だけ作成するという場合でも固まってしまったので、これは計算量ではなく、Unityの仕様に関係してくる問題なのではないかと自分の中で結論付けました。 ちなみに、2つ目のループをコメントアウトして、1つ目のループで1000個ほど粒子を複製してみましたが、こちらは問題なく動きました。 ### 長くなってしまったのでまとめます 質問したいことは ・なぜループを2つに分けると、ここまで処理が重たくなってしまうのか です(原因はループではなく別にあるのかもしれませんが...)。 1つにまとめれば解決することはわかっているのですが、後学のためにも、このような現象が起こる理由を知りたいと思っております。
回答: > > for (var y = -0.2f; y < 0f; x += 0.1f) > > > ループ変数まちがってますよ そもそもループ変数に浮動小数点を使うというのはダメです 10進数の0.1は2進数では表現できないため、ループが回るごとに誤差が蓄積していきます