[Unity] 숙련주차 트러블 슈팅

 

트러블

스테이지 난이도를 조절 할 때 스테이지 난이도별 몬스터의 체력이 증가하는 코드를 짰다. 하지만 SceneRouter를 통해 restart를 하게 되면 모든 변수 값이 초기화 되어 스테이지(Level) 변수가 계속 ‘1’로 고정 되는 트러블을 겪었다.


고민한 해결 방안 및 해결 시도

  1. GameManager를

    DontDestroyOnLoad(this.gameObject);

    통해 꺼지지 않게 해준 후 변수를 설정해 주었다. 하지만 설계miss로 인해 이미 GameManager에는 많은 변수 값이 들어갔고 초기화가 필수였다.



    2. 저장되어야만 하는 변수 값만 들고 갈 수 있는 새로운 cs파일 생성
    DataManger.cs라는 파일을 생성, 변수 저장 후 파괴되지 않게 해주었다


    (만든김에 bestScore 도 해준건 덤)

    해결 후 아쉬움

    이번 트러블을 만나면서 다시 느끼는 것이 처음 설계가 정말 중요하다는 것을 다시 느꼈다. 처음부터 이러한 기능을 만들 것이라는 생각을 했더라면 굳이 DataManger라는 파일을 만들지 않고 좀 더 깔끔한 코드로 GameManger를 이용해 만들 수 있었을 것 같다.


    게임 시연영상



댓글

이 블로그의 인기 게시물

[C#] 다른 파일에 있는 클래스 불러오기

[C#] 콘솔 데이터 저장 및 불러오기

[C#] Array 활용법