게임을 구성하는 요소들이 많아지면서 자연스레 설명할 내용들도 늘어났다. 이를 위해 기존에 순차적으로 이뤄진 튜토리얼(비록 FSM이더라도)을 수정하여 버튼을 클릭해서 각각의 튜토리얼에 들어가는 방식으로 구조를 뜯어고쳤다.
각 버튼을 누름에 따라 새 튜토리얼 리스트가 튜토리얼컨트롤러에 참조되어 돌아가게 되고, 끝나면 리스트와 각종 값들을 초기화 시킨다.
이렇게 고치는 와중에는 한 번 실행했던 버튼이 작동 안하는 버그가 있었다.
리스트를 삽입한 구조가
private List<TutorialBase> tutorials;
public void StartTutorials(List<TutorialBase> newTutorials)
{
tutorials = newTutorials;
SetNextTutorial();
}
이와 같았다.
그리고 초기화 코드는
public void CompletedAllTutorials()
{
tutorials = Clear();
}
이와 같았는데, 이는 리스트가 깊은 복사가 아니라 얕은 복사로 이루어졌기 때문에 원본 리스트가 삭제되는 현상이 발생했다.
그래서 tutorials 변수를 비워주도록 코드를 작성하여 문제를 해결하였다.
public void CompletedAllTutorials()
{
tutorials = Null;
}