以下参考書のメモ書きです。
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 が出力される。