[第8回] for文を利用したループを学ぶ|Unityで学ぶC#入門
「Unityで学ぶC#入門」の連載第7回は「メソッドの使い方を学ぶ」でした。
第8回の今回はfor文を利用したループの使い方について学びます。
ループはゲーム開発だけでなく、様々なシステム開発にも必須の知識ですのでぜひご参考ください。
ループとは
そもそもループってなに?という方もいらっしゃるかもしれません。
ループとは簡単に言うと「繰り返し」のことです。
↓ループイメージ
「特定条件下で指定した処理を繰り返す」ものがループです。
上記のイメージでは「X回」という条件の中でだけ処理A~Cを繰り返し行い、(X+1)回となったときに処理Dに移行するものです。
ループの中でも特に「X回」というように回数で条件を与える事ができるのが「for文」です。
for文の定義
では実際にfor文の使い方を確認していきましょう。
for文は以下のように使用します。
1 2 3 |
for ( int i = 0 ; i < 10 ; i++ ){ //処理内容を記述 } |
for文のカッコ内最初に整数型の変数を定義します。ここでは「int i = 0」と定義しています。
次に繰り返し回数を定義します。ここでは「i < 10」と定義しています。これの意味は「変数iが10未満のときfor文の処理を実行する」という意味で、 変数iが10を超えるとfor文から抜けて次の処理を実行します。
最後にループを抜けた後に行う変数iに対する処理を定義します。ここでは「i++」と定義しています。これはfor文内の処理が終わったときに変数iに1を足すという意味です。
※演算子については連載第5回「演算子の使い方を学ぶ」で詳しく解説しています。
この3つの記述によってループを制御することができます。
では実例で確認しながら学んでいきましょう。
キューブをfor文を使用して移動させる
実例でfor文を学んでいきます。
今回はキューブをfor文を利用して遠ざける実例を解説していきます。
まずはキューブの準備方法をご紹介します。
Unityのプロジェクトを作成したら、ヒエラルキーウィンドウ上部「Create」→「3D Object」→赤枠「Cube」を選択してください。
すると、シーンビューに白い立方体が出現します。
↓キューブが作成される
次にメインカメラとキューブが少し遠いので距離を近づけます。
ヒエラルキーウィンドウの「Main Camera」を選択してください。
選択したら、インスペクターウィンドウのTransformコンポーネント内のPositionの値を変更します。
初期設定では(X,Y,Z)=(0,-1,-10)となっていますので、Zの値を「-10」から「-5」に変更してください。
↓Z=-5に変更する
↓ゲームビュー
これで下準備は完了です。
次にC#スクリプト「Test」を作成します。
C#スクリプトの作成方法および実行方法がわからない方は以下記事をご参考ください。
参考記事)C#スクリプトの作成・実行方法
作成したら、以下のようにスクリプトを変更してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { // Start is called before the first frame update void Start() { for ( int i = 0 ; i < 5 ; i++ ){ gameObject.transform.Translate(0f,0f,i); } } } |
Start関数によって最初にfor文を実行します。
for文は「i = 0 〜 4」の間の5回実行されます。
for文内の処理はキューブオブジェクト動かすための処理です。
1 |
gameObject.transform.Translate(0f ,0f ,i); |
最初の「gameObject」によってスクリプトが取り付けられているオブジェクト(自分自身)を指定することができます。
次に「transform」では自分のTransformコンポーネントを指定することができます。
TransformコンポーネントにはUnityに標準的に準備されているメソッド「Translate」というものがあります。
今回はその「Translate」を使用してオブジェクトを移動します。
「Translate(float x,float y,float z)」という定義で使用することができ、今回はx,yはそのままzの値のみをiの値を使用して移動させます。
では実行結果を見てみましょう。
移動したことが確認できました。
滑らかに移動しないの?と思った方がいらっしゃるかもしれませんが、for文の処理は人の目に追える速度ではないことがこの実例でお分りいただけるのではないでしょうか。
本当にちゃんと動いているか確認するためにコンソールに出力してみましょう。
先ほどの「Test」スクリプトを以下のように変更してください。(変更した部分を黄色で強調)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { // Start is called before the first frame update void Start() { for ( int i = 0 ; i < 5 ; i++ ){ gameObject.transform.Translate(0f,0f,i); Debug.Log("現在の変数iの値は「" + i +"」です"); } } } |
↓実行結果(コンソール)
ちゃんと5回繰り返していることが確認できました。
このようにfor文を用いることでループを実現することができます。
まとめ
いかがでしたでしょうか。
for文を使用することで繰り返し行いたい処理を回数を指定して実行することができます。
冒頭でも述べたとおり、for文はゲーム開発だけではなくシステム開発でも多用されるのでしっかりと理解しておきましょう。
続けて第9回の記事に読む方はこちらをクリック
他の回の記事について気になる方はこちらをクリック
この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!