Update 内に記述する処理が長くなってしまったり、他の処理との区別を行いたい場合には、1ブロックの処理につき、1つのメソッドを用意することで
長くなってしまった処理を簡潔に記述し、また、処理単位でまとめることができるため便利です。
Update内に処理を全部書いた場合
void Update()
{
// 地面の判定
isGround = Physics.Linecast(transform.position + transform.up * 1, transform.position - transform.up * 0.3f, groundLayer);
// ジャンプの判定と処理
if (Input.GetButtonDown(JUMP) && isGround) {
// 着地していたとき、着地判定をfalse
isGround = false;
// Jumpステートへ遷移してジャンプアニメを再生
anim.Play(AnimatorState.Jump.ToString());
// AddForceにて上方向へ力を加える
rb.AddForce(Vector3.up * jumpPower, ForceMode.Impulse);
}
// コンボの受付時間の計測処理
if (!isComboChain) {
return;
}
// タイマー計測
comboLimitTimer += Time.deltaTime;
// タイマーの計測値がコンボ持続時間の規定値を超えたら
if (comboLimitTimer >= comboLimit) {
// コンボ終了
isComboChain = false;
// 設定を初期化
comboLimitTimer = 0;
comboCount = 0;
Debug.Log("コンボ終了");
}
// デバッグ用
if (Input.GetKeyDown(KeyCode.Z)) {
TriggerComboCount();
}
}
処理単位でメソッド化し、Update内に処理を書いた場合
void Update()
{
// 地面の判定
CheckGround();
// ジャンプの判定と処理
JudgeJump();
// コンボの時間判定
UpdateComboLimitTime();
// デバッグ用
if (Input.GetKeyDown(KeyCode.Z)) {
TriggerComboCount();
}
}
各メソッド内には、Updateメソッド内で記述していた処理がそのまま記述されています。
Update内に記述されている処理がどのような処理であるのかが、メソッド名によって明確にわかり、
合わせてUpdateメソッドがすっきりとスマートになったことがわかると思います。