実行する処理はメソッド単位に分割して定義しておきます。
特にすぐに試してみたい処理については、Start メソッド内で実行することにより、効率のよいデバッグを行うことが出来ます。
デバッグには色々なやり方があるため、上記のようにすぐに処理を動かして試したいケース以外にも、
一部の処理を一時的に停止しておきたいケースもあります。
例えば、4行ある処理をメソッド化せずに直接 Start メソッドや Update メソッドに書いた場合、
デバッグのために、その処理を一旦停止するためには4行すべてをコメントアウトする必要があります。
ですがメソッド化しておくことにより、処理の実行命令を1行だけコメントアウトすれば処理の停止が行えます。
<メソッド化していない場合、複数行の処理のコメントアウトが必要>
void Update() {
//timer += Time.deltaTime;
//if (timer >= spawnInterval) {
//timer = 0;
//SpawnGem();
//}
}
<メソッド化している場合、1行のコメントアウトで完了>
void Update() {
//SpawnTimer();
}
今回 Start メソッドや Update メソッドに直接処理を書かずにメソッド化して利用しているのは、
このように処理を一時的に止めたいケースも想定しているためでもあります。
デバッグには多くの時間を取られてしまうため、少しでも効率化を図れるよう工夫をこらしましょう。
処理をメソッド単位で分割して定義している場合、同じ処理を実行したいときには、
メソッドの実行命令を1行書くだけで処理を実装出来ます。
<宝石の生成機能をメソッド化している>
/// <summary>
/// 宝石の生成
/// </summary>
public void SpawnGem() {
// 生成
Instantiate(gemPrefab);
Debug.Log("宝石生成");
}
そのため
<メソッド化している場合、1行の処理を書くだけで実装完了>
void Start() {
// 宝石の生成
//SpawnGem(); // <= この1行で生成命令が実装できる
}
/// <summary>
/// 時間経過による宝石の生成
/// </summary>
private void SpawnTimer() {
timer += Time.deltaTime;
if (timer >= spawnInterval) {
timer = 0;
SpawnGem(); // <= この1行で生成命令が実装できる
}
}
しかも、同じ処理であれば、上記のように、異なるメソッド内でも繰り返し利用することが出来ます。
特にメソッド内の処理が多いほど効果的です。
適切な処理単位に区切ってメソッドを定義しておくことにより、処理の読み書きの両方にメリットがあります。
こういった細かな配慮の積み重ねが、良質なコーディングスキルを養うことにつながります。