Unityの知識をinputしてみる script作成

以下参考書のメモ書きです。

Scriptの作成

Assets内にScript 「C# Script」を作成する

クラスの隠蔽

C#ではクラス内にクラスを定義することができて、外側のクラスをアウタークラス、クラス内に作ったクラスをインナークラスという。そして、内側のクラスをprivateやprotectedにすると、他の場所からみることができないインナークラスを作れる。

public class Foge{// アウタークラス
    private class Huga {// インナークラス
    }
}
var huga = new Foge.Huga(); // 構文エラー

if文

if () {
} else if () {
} else {
}

for文

for (var i = 0; i < 10; i++){
}
for (var i = 0; i < 10; i++){
// 5になったら処理を抜ける 
if (i==5){
   break;
 }
// もしくは
if (i==5) break; 

}

foreach文

var list = new int[] {1,2,3,4,5};
foreach (var value i list){
    Debug.Log(value); // listの値が一つずつ出力される
}

while文

var value=0;
while(value < 90){// value値が90未満であればループ
  value = Random.Range(0,100);
}

switch文

var value = 1;
switch(value){
  case 1:
    Debug.Log("おはよう");
    break;
  case 2:
    Debug.Log("こんにちは");
  default:
    Debug.Log("\(^o^)/");
    break; 
}

クラスの継承

親クラスには共通する部分をまとめて書いておき、そのクラスを継承した子クラスでは共通で使用する処理を親から受け取る。そうすることで、親クラスのみだけ修正すれば子のクラスでも同じ修正内容を反映できる。

抽象クラス(継承専用のクラス)としてクラスを作る場合は、abstractをつける。そのクラスは、インスタンス化できない。

クラス継承をさせたくない場合は、クラスにsealedをつける。

子クラスから親クラスのメソッドを上書きする場合はvirtualをつけることで、オーバーライドが可能になる。

overrideとvirtualはセットなわけか。なるほど。

abstract public class Car { // abstractだから、new Car() するとエラー
  public virtual void Run() {
    Debug.Log("run");
  }

  public void Stop() {
    Debug.Log("stop");
  }
}

public class SportCar : Car {// クラス継承
  public override void Run() { // オーバーライド
    Debug.Log("superSpeedRun");
    base.Run(); // base. で親クラスのメソッドを実行できる
  }
}

var sportCar = new SportCar();
sportCar.Run(); // superSpeedRun  run の順で出力される
sportCar.Stop(); //  stop が出力される。