読者です 読者をやめる 読者になる 読者になる

developer_RYO’s blog

スマホアプリやPCゲーム、音楽やイラストを自由気ままに作っている人の技術ログです

早期リターンを利用してUpdateで処理させるかさせないかを管理する

こんばんは。

コーディングの勉強を本でしていたのですが、その時に早期リターンを利用すると、
コードがすっきりするという記述があったので、早速取り入れてみました。

下記は、unityで現在作っている音ゲーの、
ゲームオブジェク トにつけたスクリプトの一部

//ヒットバーの判定
void Update () {
	//先にリターン
        if(BeatNoteRun == false) return;
         
        music.checkFirst(timer.Now);
        music.checkSecond(timer.Now);
        music.checkThird(timer.Now);
        music.CheckMissing(timer.Now);
}

//音符を生成するところ
void Update () {
	//先にリターン
	if(CreateNoteRun == false) return;
	
	music.CheckCreateFirst(timer.Now,this.transform);
	music.CheckCreateSecond(timer.Now,this.transform);
	music.CheckCreateThird(timer.Now,this.transform);
}

//タイマー
void Update(){
	//先にリターン
	if(timerRun == false) return;
		
	//タイマーを進める
	AddTimer();
}

早期リターンで利用するbool型変数は、別スクリプトでコルーチンを使ってtrueにし、
ゲームを動作するようにしました。

////////////////////////////////////////
//処理

void Start () {
	audioObject.GetComponent<AudioSource>().clip.LoadAudioData();
	StartCoroutine(init(3));
}
	
	
//初期化する関数
private IEnumerator init(float waitTime){
    	yield return new WaitForSeconds(waitTime);
		
	audioObject.GetComponent<AudioSource>().Play();
	timerObject.GetComponent<MTimer>().timerRun = true;
	beatObject.GetComponent<MBeatNote>().BeatNoteRun = true;
	createObject.GetComponent<MCreateNote>().CreateNoteRun = true;
	Debug.Log("ゲームメイン初期化終了");
}


update内部をifのカッコでくくるよりかは綺麗にまとまりそうです。