[過去ログ] 【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
697: 2017/12/08(金)01:50 ID:rY92HIWe(1/5) AAS
はい皆さんこんばんは。
気分が乗ったら講義のお時間です。
本日の講義は "ループ制御" です。
ループ制御は「プログラムの任意の場所を繰り返し実行させたい」ときに使うもので
"for文" と "while文" の2つを使います。
698: 2017/12/08(金)01:50 ID:rY92HIWe(2/5) AA×

699: 2017/12/08(金)02:06 ID:rY92HIWe(3/5) AAS
次に下の例を見てください。
[例]
int i=0;
for(i=10; i>0; i--){
Debug.Log("i=" + i );
}
これはスタート値10から始まり、0に向かって1ずつiの値を減らしていっています。
実行結果は「i=10」「i=9」…「i=1」となります。
初心者が間違えやすいのが「i>0;」部分を終了条件と思う事です。
ここは終了条件ではなく『継続条件』です。
この部分の式が成立している間 for文 は繰り返しを実行し続けると思ってください。
上の例を言葉で表すと
「iの中身が0より大きい場合、繰り返してください」となります。
[例]
int i=0;
for(i=10; ; i--){
Debug.Log("i=" + i );
}
これは「継続条件」を記述していない例です。
これでもエラーにはなりませんが絶対に実行しないでください。
この場所でプログラムが永遠と繰り返され続けUnityがフリーズしてしまいます。
これを『無限ループ』と呼びます。
無限ループが発生するとUnityを強制終了しないと終わらせられなくなります。
強制終了のやり方が分からない人は絶対に実行しないでください。
このように継続条件式を書く部分はとても重要です。
700: 2017/12/08(金)02:18 ID:rY92HIWe(4/5) AAS
[例]
for(int i=0; i<10; i++){
Debug.Log("i=" + i );
}
これはiの宣言を for文 の中で一緒に行っている例です。
この記述が一番使います。
このiはfor文内の"{ }"の中だけ有効でループが終わると自動的に消滅します。
この点がfor文外で宣言した場合と異なるので注意が必要です。
つまり以下の例はエラーになります。
[例]
for(int i=0; i<10; i++){
Debug.Log("i=" + i );
}
Debug.Log("i=" + i ); //←"i"消滅後なのでここでエラーとなる。 ◎
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
701(1): 2017/12/08(金)02:33 ID:rY92HIWe(5/5) AAS
[例]
for(int i=0; i<10; i=i+2){
Debug.Log("i=" + i );
}
これは三番目の増減値を1ではなく2にした例です。
「i=0」「i=2」「i=4」…「i=10」のように表示されます。
"i=i+2"部分は"i+=2"のように省略系も使用できます。
[例]
for(int y=0; y<3; y++){
for(int x=0; x<3; x++){
Debug.Log( x + ":" + y );
}
}
多重ループの例です。
ループ制御はループ中にさらにループさせることが可能です。
上の例の場合は
「0:0」「1:0」「2:0」
「0:1」「1:1」「2:1」
「0:2」「1:2」「2:2」
のように表示されます。
2DのJRPGやシミュレーションのフィールドマップや、手動であたり判定を行う時に使用したりします。
Rock54が出たから while文 は次回に持ち越し
今回は以上だクソども
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.072s