【Unity】C#の基本構文『switch』

 

『switch』文とは

条件により処理を分岐させたいときに使います。

 

もくじ

1.基本構文
2.構文パターン
3.具体例
4.Unityでの使用例【スマホでのタッチを検知する】

 

 

基本構文

 

スクリプト

※プログラミングは基本的に、すべて半角英数字で記述します。上記では便宜上全角を使用していることをご了承ください。

 

スクリプトの解説

“switch(変数)”に書かれた「変数」の値(数値や文字列)が、

“case”の後ろに書かれた「値」と一致する場合に、その中の処理が行われます。

 

例えば「変数」が「値1」であった場合には、

“case 値1”の中の「処理1」が実行されます。

処理が終われば、switch文は終了となります。

 

“default”は、どの値とも一致しなかった場合に、選択されます。

“break;”は、「ここで”case”内の処理が終了です」という合図なので、

処理の最後には必ず記述しましょう。

 

“変数”の箇所(match式という)には、

char型, string型, bool型, 整数値(int型やlong型), enum値が利用可能です。

 

 

構文パターン

「switch」文は以下のような書き方もできます。

 

パターン1

「case」は1つ以上あれば、いくつあっても問題ありません。
「default」はなくても問題ありません。

 

パターン2

処理が同じ場合には、このような書き方もできます。
この場合「値1」と「値2」で同じ「処理」が実行されます。

 

 

具体例

それでは具体例を見てみましょう。

 

スクリプト

例1)int型を使用した場合

 

例2)string型を使用した場合

 

使用されている変数・関数

Debug.Log(“default”):UnityエディタのConsoleに「default」と出力する関数

 

スクリプトの解説

例1では、int型である”count”で場合分けがされています。

“count”には5が代入されているので、”case 5″に入り、

consoleには「case1or5」と出力されます。

 

例2では、string型である”subject”で場合分けがされていますね。

“subject”には「国語」が代入されているので、どの”case”にも当てはまりません。

なので”default”の中に入り、consoleには「その他」と出力されます。

 

 

Unityでの使用例

スマホでの「タッチ」を検知するコードになります。
if文で説明したのと同じで、今度はswitchを利用したスクリプトになります。

 

スクリプト

 

使用されている変数・関数

Input.touchCount:スマホでタッチ(タップ)された回数が格納されている
Input.GetTouch(0):座標などのタッチ情報を取得する関数
TouchPhase.Began:画面に指が触れたとき
TouchPhase.Moved;画面上で指が動いたとき
TouchPhase.Stationary:指が画面に触れているが動いていないとき
TouchPhase.Ended:画面から指が離れたとき

 

スクリプトの解説

「Input.touchCount > 0」は、

「スマホのタッチ回数が0より大きい場合」という意味であり、

上記では「スマホのタッチ回数が0より大きければ、タッチ情報を取得する」

という処理が行われています。

 

タッチがされていなければInput.touchCountは0なので、

条件は満たされずif文は無視されます。

 

タッチ情報が取得された後、

今度はその取得したタッチ情報をもとに分岐が発生しています。

 

if文では、タッチされたかどうかを検証して、

switch文では、タッチされた情報が何であるかで条件分岐させています。

 

上記コードをUpdate関数内に記述すれば、スマホのタッチを検知して、

いろいろな処理を行うことができます。