p.124 無限ループを止める:補足
・プログラムが無限ループした場合、ファイルなどを保存してからUnityを終了する ⇒ タスクバーのUnityを右クリックし「ウィンドウを閉じる」 ・終了できなければタスクバーを右クリックし「タスクマネージャ」で終わらせる ※タスクマネージャが利用できない場合: ・「スタート」を右クリックして「シャットダウンまたはサインアウト」で「サインアウト」 ・サインインすると利用可能になる(ヒューマンアカデミーのPCではidは「human」と入力) ・それから、無限ループの原因となったスクリプトを修正または削除する ・なお、テキストp.125では「①歯車アイコン」とあるが「①縦の「…」アイコン」に代わっている
作成例
using UnityEngine;
public class chap3_10_1 : MonoBehaviour{
void Start() {
string[] grade = {"松","竹","梅"};
foreach(string g in grade) {
Debug.Log(g);
}
}
}
p.126 復習ドリル 問題1 chap3_10_1.cs
・正誤:「ヒント:Chap3-7-2.jsにChap3-4-1.js」⇒「ヒント:chap3_7_2.csにChap3_4_1.cs」
作成例
using UnityEditor.Callbacks;
using UnityEngine;
public class chap3_10_2 : MonoBehaviour{
void Start() {
string[] dirs = {"東","西","南","北","北東"};
for (int cnt = 3; cnt >= 0; cnt--) { //逆順に繰返す
Debug.Log(dirs[cnt] + "方向");
}
}
}
Chapter 3 補足
2次元配列について
・配列の添字を2個にしたものを2次元配列といい、縦横や年組というような表形式のデータを扱うときに便利 ・配列の添字を3個以上にもできるので、まとめて多次元配列ともいう ・C#では2種類の多次元配列を扱うことができ、片方を(通常の)配列、もう片方をジャグ配列という ・なお、C/C++言語の2次元配列はC#の(通常の)配列に該当するが、表記方法が大きく異なるので注意
(通常の)2次元配列
・2つの添字を用いて「 配列名[添字①, 添字②] 」形式で扱うもの
※ なお、C/C++では「 配列名[添字①][添字②] 」形式になる
・1次元配列と同様に添字は0からなので、2次元配列の最初の要素は「配列名[0,0]」になる
・宣言の書式: 型[,] 配列名;
・生成の書式: 配列名 = new 型[要素数①, 要素数②];
・宣言と生成の書式: 型[,] 配列名 = new 型[要素数①, 要素数②];
・例: int[,] students = new int[3, 2]; //1~3年の1~2組の生徒数の配列
⇒ students[0,0] students[0,1] students[1,0] students[1,1] students[2,0] students[2,1] の6要素が生成される
・初期化の書式: 型[,] 配列名 = {{…},…}; //初期値をグループ化して与える
・例: int[,] students = {{11, 12}, {21, 22}, {31, 32}};
・なお、2次元配列名.Lengthとすることで全要素数(要素数①×要素数②)が得られる。要素数①、要素数②を動的に得ることはできない
ミニ演習 mini0720a.cs
・上記の配列studentsの全要素を添字と共に表示しよう ・forの2重ループにすると良い ・全要素数も表示しよう
作成例
//ミニ演習 mini0720a.cs
using UnityEngine;
public class mini0720a : MonoBehaviour{
void Start() {
int[,] students = {{11, 12}, {21, 22}, {31, 32}}; //(通常の)2次元配列
for(int i = 0; i < 3; i++) { //2次元配列の添字①について繰返す
for(int j = 0; j < 2; j++) { //2次元配列の添字②について繰返す
Debug.Log("[" + i + "," + j + "] = " + students[i,j]);
}
}
Debug.Log(students.Length); //6
}
}
ジャグ配列(2次元配列の場合)
・2つの添字を用いて「 配列名[添字①][添字②] 」形式で扱うもの
・通常の配列とは異なり、配列の配列で構成する
・よって、内側の要素数が異なってもOK
例:3学年あるが1年は2クラス、2年は3クラス、3年は2クラス
・ジャグ配列の最初の要素は「配列名[0][0]」になる
・宣言の書式: 型[][] 配列名;
・生成の書式: 配列名 = new 型[要素数①][];
・そして、1次元配列を格納する: 配列名[添字①] = new 型[要素数②];
例:
int[][] students = new int[3][]; //3年分を確保する
students[0] = new int[2]; //1年の2クラス分を生成
students[1] = new int[3]; //2年の3クラス分を生成
students[2] = new int[2]; //3年の2クラス分を生成
・初期化は内側の配列で行う
例:
int[][] students = new int[3][]; //3年分を確保する
students[0] = new int[]{11, 12}; //1年の2クラス分を生成
students[1] = new int[]{21, 22, 23}; //2年の3クラス分を生成
students[2] = new int[]{31, 32}; //3年の2クラス分を生成
・ジャグ配列名.Lengthとすることで要素数①が得られる。
例: students.Lengthは3
・そして、ジャグ配列名[添字].Lengthとすることで、ジャグ配列を構成する配列の要素数が得られる
例: students[0].Lengthは2、students[1].Lengthは3、students[2].Lengthは2
ミニ演習 mini0720b.cs
・上記のジャグ配列studentsの全要素を添字と共に表示しよう ・forの2重ループにすると良い ・Lengthを活用しよう
提出:ミニ演習 mini0720b.cs