[過去ログ]
【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
【3Dゲームエンジン】Unity質問スレッド32 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
697: 名前は開発中のものです。 [sage] 2017/12/08(金) 01:50:07.09 ID:rY92HIWe はい皆さんこんばんは。 気分が乗ったら講義のお時間です。 本日の講義は "ループ制御" です。 ループ制御は「プログラムの任意の場所を繰り返し実行させたい」ときに使うもので "for文" と "while文" の2つを使います。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/697
698: 名前は開発中のものです。 [sage] 2017/12/08(金) 01:50:30.93 ID:rY92HIWe まずは for文 から説明します。 for文 は以下のように記述します。 [例] int i=0; for(i=0; i<10; i++){ Debug.Log("i=" + i ); } これは「{ }」に囲まれた箇所が10回繰り返される例です。 今回「{ }」に囲まれた部分は「Debug.Log("i=" + i );」なのでDebug.Logが10回実行されることになります。 1回実行される度に"i"は1ずつ加算されていきます。 結果「i=0」「i=1」…「i=9」と画面に表示されます。 それでは for文 自体の説明です。 「 for(?i=0; ?i<10; ?i++) 」 ?"i=0;"…ここにはループのスタート値(初期値)を定義します。 例えばここを"i=8"にすると0からのスタートではなく8からのスタートになるので ループ回数は10回ではなく「i=8」と「i=9」の2回しかループしなくなります。 ちなみに今回は変数"i"を使用していますが好きな変数名でかまいません。 またint型でなくbyte型でも構いませんがfloat型などの小数型は使えません。 ?"i<10;"…ループ繰り返し条件式です。 今回の例では「iの値が10より小さい(10は含まれず9以下)場合はループを繰り返す」という式になっています。 例えば「i<=10」とすると 「iの値が10以下場合はループを繰り返す」となり10も含まれます。 ?"i++"…ループに使用している変数の増え方を指定します。 この例の場合はiが1ずつ加算(増える)されていきます。 「i=i+1」と同じです。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/698
699: 名前は開発中のものです。 [sage] 2017/12/08(金) 02:06:02.96 ID:rY92HIWe 次に下の例を見てください。 [例] 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を強制終了しないと終わらせられなくなります。 強制終了のやり方が分からない人は絶対に実行しないでください。 このように継続条件式を書く部分はとても重要です。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/699
700: 名前は開発中のものです。 [sage] 2017/12/08(金) 02:18:02.11 ID:rY92HIWe [例] 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) http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/700
701: 名前は開発中のものです。 [sage] 2017/12/08(金) 02:33:53.86 ID:rY92HIWe [例] 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文 は次回に持ち越し 今回は以上だクソども http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/701
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.032s