[過去ログ]
【3Dゲームエンジン】Unity質問スレッド32 (1002レス)
【3Dゲームエンジン】Unity質問スレッド32 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
391: 名前は開発中のものです。 [sage] 2017/11/25(土) 19:39:11.35 ID:tNOe2BPS 「キムチ君、制作物は細かい所手抜きなのに言葉は潔癖かよ!」と思いながらROMってる皆さんこんばんは。 講義のお時間です。 今回も"条件分岐"についての講義です。 前回は「if文」を使いました。 今回はもう一つの条件分岐文である「switch文」をやります。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/391
394: 名前は開発中のものです。 [sage] 2017/11/25(土) 19:57:24.02 ID:tNOe2BPS 前回、"if(){ } else if(){ }"の説明で下のような例を出しました 例 if( a == 1 ){ Debug.Log("aは1"); } else if( a == 2 ){ Debug.Log("aは2"); } else if( a == 3 ){ Debug.Log("aは3"); } else { Debug.Log("aは1でも2でも3でもない"); } "switch文"を使用するとこれを下のように書けます。 実行結果はif文でもswitch文でも両方同じです。 例 switch( a ){ case 1: Debug.Log("aは1"); break; case 2: Debug.Log("aは2"); break; case 3: Debug.Log("aは3"); break; default: Debug.Log("aは1でも2でも3でもない"); break; } http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/394
397: 名前は開発中のものです。 [sage] 2017/11/25(土) 20:05:41.19 ID:tNOe2BPS 見て分かる通りswitch文で出来る事はif文でも可能です。 そのせいでswitchって使い所がイマイチわからないという初心者が多いです。 switch文はif文の簡易バージョンと思ってください。 「switch( a >= 1 )」とか 「switch( a == 1 )」とか 「switch( a == 1 && b == 1)」とか if文並みの複雑な条件式は記述できません(エラーになります) 『1つの変数の値の変化で実行させたいプログラムを変えたい時に使う』物です。 複雑な条件分岐はIF文に任せましょう。 ちなみに先程の例では「if else if文」側より「switch文」側の方が多少処理速度が速いです。 早いと言っても0.0001秒という微々たる差ですが。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/397
398: 名前は開発中のものです。 [sage] 2017/11/25(土) 20:17:13.50 ID:tNOe2BPS "default:"は"case"のどれにも一致しなかった場合に実行される部分です。 if文のelseに相当します。 if文でelseを書かない事が出来たように不要ならば"default:"も書かなくて大丈夫です。 例 switch( a ){ case 1: Debug.Log("aは1"); break; case 2: Debug.Log("aは2"); break; } "case"は「変数がその値だったら」という意味合いで記述します。 上の例ですと "case 1:"は"if( a == 1 )"と同じで"case 2:"は"if( a == 2 )"と同じです。 もう少し分かりやすくすると下のようになります。 例 string mode = "OPENING"; switch( mode ){ case "OPENING": Debug.Log("オープニングだよ"); break; case "ENDING": Debug.Log("エンディングだよ"); break; } 上の場合「オープニングだよ」と表示されます。 変数"mode"の中身を例えば"hello"と適当な文字に変えるとどれにも一致しなくなるため何も表示されなくなりなります。これは"default:"を記述していないからです。 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/398
399: 名前は開発中のものです。 [sage] 2017/11/25(土) 20:25:18.25 ID:tNOe2BPS "break;"は重要です。 下に"case 1:"の"break;"を削除した例を書きます。 例 switch( a ){ case 1: Debug.Log("aは1"); case 2: Debug.Log("aは2"); break; } この場合"a"の中身が1の時に「aは1」と「aは2」両方表示されます。 "break;"を付けないと処理が止まらず次の"case"も実行される仕組みです。 この特性を生かし「aの中身が1か2の時に実行させたい」などの変わった使い方もできます。 例 switch( a ){ case 1: case 2: Debug.Log("aは1か2"); break; } 当然ですが「switchの中にさらにswitch」、「switchの中にif文」なども可能です。 ただし見づらくなるのであまり多少はしない方がいいでしょう http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/399
400: 名前は開発中のものです。 [sage] 2017/11/25(土) 20:27:35.93 ID:tNOe2BPS <switch文の中にさらにswitch文の例> int a = 1, b = 1; switch( a ){ case 1: switch( b ){ case 1: Debug.Log("aは1でさらにbは1"); case 2: Debug.Log("aは2"); break; } この場合"a"の中身が1の時に「aは1」と「aは2」両方表示されます。 "break;"を付けないと処理が止まらず次の"case"も実行される仕組みです。 この特性を生かし「aの中身が1か2の時に実行させたい」などの変わった使い方もできます。 例 switch( a ){ case 1: case 2: Debug.Log("aは1か2"); break; } 当然ですが「switchの中にさらにswitch」、「switchの中にif文」なども可能です。 ただし見づらくなるのであまり多少はしない方がいいでしょう http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/400
401: 名前は開発中のものです。 [sage] 2017/11/25(土) 20:28:57.24 ID:tNOe2BPS これは書き途中で送信したミス投稿なので無視するように>>400 http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/401
402: 名前は開発中のものです。 [sage] 2017/11/25(土) 20:32:59.12 ID:tNOe2BPS <switch文の中にさらにswitch文の例> int a = 1, b = 1; switch( a ){ case 1: switch( b ){ case 1: Debug.Log("aは1でさらにbは1"); break; case 2: Debug.Log("aは1でさらにbは2"); break; } case 2: Debug.Log("aは2"); break; } <switch文の中にさらにif文の例> int a = 1, b = 1; switch( a ){ case 1: if( b == 1 ){ Debug.Log("aは1でさらにbは1"); } else if( b == 2 ){ Debug.Log("aは1でさらにbは2"); } break; case 2: Debug.Log("aは2"); break; } http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/402
403: 名前は開発中のものです。 [sage] 2017/11/25(土) 20:37:39.60 ID:tNOe2BPS 複雑になってきましたね 実は>>402の 「<switch文の中にさらにswitch文の例>」には"break;"が1つ抜けており 「a = 1」の時の結果が正しくならないバグを今見つけました。 このように見づらい&ミスをしやすくなるため switch文の中にさらにswitch文を入れる事はあまり良い方法とはいえず推奨はされていません。 以上だクソども http://mevius.5ch.net/test/read.cgi/gamedev/1509307535/403
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.035s