こんばんは、ちきなるです。
Unityのゲーム開発で、初の無限ループを作ってしまいました。
今までは、for文を使ってループ処理を行っていたのですが、どうしてもwhileじゃないと書けない処理が出てきたので、久々にwhile文を使ってみたら、見事に無限ループに陥りました。
※ちなみに私は、過去にfor文で無限ループさせたことがあります。
横にあるブロックを確認するために、一つずつずらしながら確認を行う処理を作ったつもりだったのですが、横のブロックに移る処理をつけ忘れていたため、永遠に同じブロックの確認を行う処理を作ってしまいました。
whileを使う時は、条件が変更されているか確認してから実行します。
ちなみにUnityでは、無限ループになるとフリーズして復帰しないようです。てっきり途中で実行の強制終了が入ると思ったのですが、そういった処理はないようなので、無限ループになると、Unityを強制終了させるしかないと思います。
※アセットストアに無限ループ対策のアセットがあるみたいです。
とりあえず、Playボタンを押すときは、保存をしてから押すようにしようと思いました。
おまけ
for文:設定した値を変更しながらループを行い、条件を満たさなくなった場合、ループを終了する処理。
while:設定された条件が満たされている間ループを続ける処理。
ざっくりと書きましたが、for文の場合、ループをするたびに勝手に値を変更してくれるので、無限ループになりにくいです。
対してwhile文は、条件に合わせて、自分で値の変更を記述しなければいけないので、無限ループになりやすいです。
どちらも一長一短なので、無限ループを恐れず処理に合わせて上手く使っていきたいです。

コメント