-
최적화 - 2Galaxy Ball/5. 최적화 2024. 9. 10. 22:34
지난 글에 이어 계속해서 Update 메서드에서 코드들을 빼보겠다
지난번에는 구체를 카운트하는 기능을 뺐다면 이번에 빼볼 코드는
int totalenemy = GameObject.FindGameObjectsWithTag("Enemy").Length; if (totalenemy <= 0) { gameManager = FindObjectOfType<StageGameManager>(); if (gameManager.StageClearID == StageState.chooseStage && gameManager.StageClearID != 5) { gameManager.StageClearID += 1; gameManager.SaveStageClearID(); } if (gameManager.StageClearID == 5) { gameManager.StageClearID += 0.5f; gameManager.SaveStageClearID(); } SceneManager.LoadScene("Clear"); }
적 유닛의 개수를 카운트하는 기능이다. 이것 역시 통째로 update안에 들어있는 코드들이다
private int totalEnemies; private void Start() { totalEnemies = GameObject.FindGameObjectsWithTag("Enemy").Length; } public void RemoveEnemy() { totalEnemies--; if (totalEnemies <= 0) { StageClear(); } } private void StageClear() { gameManager = FindObjectOfType<StageGameManager>(); if (gameManager.StageClearID == StageState.chooseStage && gameManager.StageClearID != 5) { gameManager.StageClearID += 1; gameManager.SaveStageClearID(); } if (gameManager.StageClearID == 5) { gameManager.StageClearID += 0.5f; gameManager.SaveStageClearID(); } SceneManager.LoadScene("Clear"); }
전글에서 했던것과 비슷한 방법으로 해결이 가능하다.
차이점이 있다면 구체는 언제든지 새로 생기고 파괴될 수 있겠지만 적 유닛의 수는
처음 시작할때부터 정해진뒤 파괴될 일 밖에 없다는것. 어떻게보면 더 수월한것이다
태그를 사용해야하는
private void Start()
{
totalEnemies = GameObject.FindGameObjectsWithTag("Enemy").Length;
}파트는 Start에서 딱 한번만 진행하고 그 뒤에는
public void RemoveEnemy()
{
totalEnemies--;
if (totalEnemies <= 0)
{
StageClear();
}
}적 유닛이 파괴될때마다 RemoveEnemy 메서드를 실행하면 된다.
그리고 RemoveEnemy 메서드가 실행될때마다 자동으로 한번씩 실행되는 StageClear() 메서드
private void StageClear()
{
gameManager = FindObjectOfType<StageGameManager>();
if (gameManager.StageClearID == StageState.chooseStage && gameManager.StageClearID != 5)
{
gameManager.StageClearID += 1;
gameManager.SaveStageClearID();
}
if (gameManager.StageClearID == 5)
{
gameManager.StageClearID += 0.5f;
gameManager.SaveStageClearID();
}
SceneManager.LoadScene("Clear");
}여기서 Clear 조건에 만족하는지 확인하면 된다.
그렇게 기존 update 메서드안에 있는 코드들을 지우고 새롭게 추가해주었다
물론 위에서 totalEnemies에 대해서도 정의해주었다
자 그럼 이제 마지막으로 남은건 적 유닛이 파괴되기 직전 RemoveEnemy() 메서드가 실행되도록 해주면 된다
그리고 그건 당연히 적 유닛을 컨트롤하는 EnemyCenter 스크립트에 있다
그냥 파괴되기 직전 spGameManager.RemoveEnemy(); 한줄만 넣어주면 되는것이다
적을 모두 제거했을때 정상적으로 Clear 씬으로 변환되는것을 확인할 수 있다
'Galaxy Ball > 5. 최적화' 카테고리의 다른 글
최적화 - 6 (1) 2024.09.24 최적화 - 5 (BallController 스크립트 제작#2) (0) 2024.09.20 최적화 - 4 (BallController 스크립트 제작#1) (1) 2024.09.20 최적화 - 3 (1) 2024.09.19 최적화 - 1 (0) 2024.09.10