public で宣言しているクラスは、クラス内の public で宣言している情報を他のクラスに対して公開しています。
public 変数であれば、他のクラスより変数の参照や、変数への代入処理が行えます。
public メソッドであれば、他のクラスより実行命令を受けて、処理を実行することが出来ます。
今回の場合、前回の手順で製作している ObstacleBase クラスにある public メソッドの DestroyObstacle メソッドに対して、
PlayerController クラスより、この DestroyObstacle メソッドへの実行命令を行っています。
このように、クラスには、クラス同士の繋がりがあります。これをクラス間の依存関係といいます。
PlayerController.cs
// public メソッドへの実行命令
obstacle.DestroyObstacle();
上記の命令を受けて、ObstacleBase クラスの DestroyObstacle メソッドが実行されます。
ObstacleBase.cs
/// <summary>
/// 破壊処理
/// </summary>
public virtual void DestroyObstacle() {
Destroy(gameObject);
Debug.Log("障害物破壊");
}
DestroyObstacle メソッド内に Debug.Log メソッドを記述していますが、これは、処理が正常に動作しているかどうか
Console ビューを通じて可視化するために役立っています。つまり、この処理が表示されないときには、正常に動作していないことになります。
今回はゲーム画面上から障害物が破壊されて消えますので、プログラム内部を見なくても処理の成否を判断できますが、
そういった視覚的に見えない処理が動いているケースの方が多いため、Debug.Log メソッドを利用した処理の可視化は開発においては不可欠な確認方法になります。
理解を深めるためにも、クラスやメソッド内の処理を可視化してみてください。
クラスの関係
各クラスには役割が分担されているため、1つのクラスだけではゲーム内の処理をすべて実行することは出来ません。
そのため、クラス同士が補間しあい、必要な情報のやり取り、メソッドの実行命令などのやり取りを行うことによって、
各クラスの役割に応じた機能を処理できるようになっています。
そのため、どのクラスのメソッドに対して実行命令を行っているのか、また、どのクラスにはどういった情報があるのか、ということを
プログラムを構築する人が理解した上で、クラスの設計を行い、拡張性のあるクラスになるように考えて実装を行う必要があります。
よって、プログラム内にロジックを組むためには、各クラスの機能を理解した上で始めて、ロジックを考えていく段階になります。
Unity が用意しているクラスやメソッドも多いため、多くの情報を知識として吸収することがロジックを組み立てていく1つの指針になります。