Unity_개발일지_50

홍신영·2024년 12월 31일
0

Unity

목록 보기
52/62

오늘은 튜토리얼 작업을 이어 진행했다.

튜토리얼은 게임을 시작하고 처음 마을에 입장하면 한 번,
스테이지를 선택하여 첫 번째 별자리의 첫 스테이지에 입장하면 한 번 실행되도록 하였다.

여기서 문제가 발생하였는데, 마을에 들어올 때마다, 첫 스테이지에 들어올 때마다 튜토리얼이 계속 진행되는 문제가 있었다.

튜토리얼이 시작되는 예외처리를 안해주었던 것.

튜토리얼의 시작의 조건을 달아 주었다.

  1. 마을에 입장하면 튜토리얼은 시작되는데 만약 첫 별자리의 첫 스테이지가 클리어가 되지 않았을 때만 실행되도록 하였다.

  2. 던전에 첫 별자리, 첫 스테이지는 클리어 되지 않았을 때만 실행되도록 하였다.

이렇게 변경을 해주면서 스테이지 선택 ui부분도 수정해주었다.

기존에는 스테이지 락 언락 기능을 활용하기 위해 2차원 배열로 별자리와 스테이지를 관리해 주었는데 이 부분에서 0,0의 스테이지를 true로 하여 첫 스테이지 버튼을 활성화 시켜주었는데 이러면 튜토리얼이 진행되지 않아 클리어여부는 false로 하되, 버튼은 활성화되도록 버튼에 interactable은 true로, alpha값도 1로 설정해주었다.

for (int i = 0; i < clearData.stageCleared.GetLength(0); i++) // 별자리 갯수 만큼 12번 돌리기
        {
            for(int j = 0; j < clearData.stageCleared.GetLength(1); j++) // 스테이지 갯수 만큼 6번 돌리기 
            {
                if(buttonIndex >= buttons.Length) // 버튼 수 초과하면 반복 종
                {
                    break;
                }
                if (clearData.stageCleared[0, 0] == false)
                {
                    buttons[0].image.color = new Color(1, 1, 1, 1);
                    buttons[0].interactable = true;
                }
                if (clearData.stageCleared[i,j] == false)
                {
                    buttons[buttonIndex].image.color = new Color(1, 1, 1, 0.3f);
                    buttons[buttonIndex].interactable = false;
                }
                else
                {
                    buttons[buttonIndex].image.color = new Color(1, 1, 1, 1);
                    buttons[buttonIndex].interactable = true;
                }

                
                buttonIndex++;
            }
        }

위 처럼 0,0은 활성화 나머지가 false면 잠궈주고, true면 풀어주는 식으로 구현하였다.

    public override void Enter()
    {
        clearData = GameManager.Instance.clearData;
        if(clearData.stageCleared[0,0] == false)
        {
            popup = UIManager.Instance.Show<UIPopupTutorial>();
            popup.SetTutorialData(dialogs[curDialogIndex]);
            popup.OnPrintLastChar += PrintNextDialogORHideUI;
        }
    }

튜토리얼에서도 시작되면 클리어 데이터를 가져오고 0,0이 클리어 되었는지 확인 후 아니라면 진행하도록 하였다.

이렇게 튜토리얼이 반복해서 진행되는 문제는 해결하였다.
내일은 튜토리얼에서 update문에서 코루틴이 돌고 있어 문자가 버버법ㄱ이며 출력되는 문제를 해결해야하고, canvas에 오버레이를 통해 nav시스템과 함께 이동방향을 알려주는 길찾기 기능도 추가해볼 생각이다.
그리고 이제 퍼즐도 더 찍어내야한다. 맵이 너무 횡하기도 하고 스테이지가 나오려면 퍼즐 요소도 많아야하기 때문에.. 맵에 구성할 것들을 더 찾아보자.
포탈, 점프대, 떨어지는 발판까지는 추가해보았지만 뭔가 구조적으로 마음에 들지는 않는다. 각각 따로 노는것이 영..
그리고 마지막으로 스테이지도 지금은 6개 이지만 흠..딱 6개 더 만들어 두 번째 별자리까지 만드는 것을 목표로 진행해보아야겠다.

별자리의 특색에 맞게 디자인 할 수 있을지..화이팅이다. 이제 새해가 왔으니 정말 화이팅이다! 게임 개발자가 되는 그 날까지 아니 그 날 이후에도 화이팅.

profile
게임 클라이언트 개발자

0개의 댓글