(본 글은 프로젝트 중 공부했던 내용을 개인적으로 기록하기 위한 용도입니다.)
진행방식은 똑같지만 라이프 개수에 차이를 줘 노말모드와 하드모드를 따로 구현하고 싶었다.
(노말모드 - 라이프 3개 / 하드모드 - 라이프 1개)
이 경우 다른 부분은 모두 같고 라이프만 모드에 따라 차이가 났기 때문에
따로 클래스를 구성하지 않고 모드에 따라서 경우에 맞춰 스크립트를 다르게 작성했다.
모드를 구분하기 위해 enum Type을 사용했는데,
enum Type이란 상수를 콤마로 모아놓은 열거형 클래스로
변경 불가한 읽기 전용 값(날짜, 색깔 등)을 모아 관리시 유용하다.
나는 이 이넘 타입을 사용하여 모드를 정의해주고,
switch문을 사용하여 필요할 때마다 모드를 나누어 실행하게 해줬다.
그리고 인스펙터창에서 직접 씬 별로 모드를 선택해주면 된다.
굉장히 유용하게 잘 사용한 기능이다.
<코드>
public class Stage1Manager : MonoBehaviour
{
public enum Type { MODE1_1, MODE1_2 }; //노말모드, 하드모드
public Type enumType;
private void Start()
{
switch (enumType)
{
case Type.MODE1_1:
GameManager.Instance.Life = 3;
break;
case Type.MODE1_2:
GameManager.Instance.Life = 1;
break;
default:
break;
}
}
void Stage1Clear()
{
if(Monster.monsterCount==0 && arrivedAtPortal)
{
playerManager.PlaySE(portalSound);
arrivedAtPortal=false;
GameManager.Instance.Stage1Hp = playerManager.Hp; //체력 스테이지2로 넘겨주기
switch (enumType)
{
case Type.MODE1_1:
SceneManager.LoadScene("Stage11.0");
break;
case Type.MODE1_2:
SceneManager.LoadScene("Scene21.0");
break;
default:
break;
}
}
else if(Monster.monsterCount>0 && arrivedAtPortal)
{
GameManager.Instance.isMonsterLeft = true;
}
}
}
'Unity 포트폴리오 > 플젝2. 3D FPS게임' 카테고리의 다른 글
Unity UI : 이미지 색상 바꾸기 / Color와 Color32의 차이 (0) | 2022.06.21 |
---|---|
Unity C# PlayerPrefs로 life이미지 관리하기 (0) | 2022.06.21 |
Unity FPS : 총 스크립트 (0) | 2022.06.21 |
Unity FPS : PowerShot 및 Charging 애니메이션 구현 (0) | 2022.06.21 |
Unity 오브젝트 상하 반복운동 Mathf.Sin (0) | 2022.06.19 |