RE : 격 자 : 세번째 프로젝트 # 1 : 튜토리얼 구조 수정

2024. 7. 31. 21:51·개발/FRACTiLE

개요

다른걸 만지기 전에 일단 구조를 뜯어고치는 것이 먼저입니다.

그 시작은 눈에 잡혔던 튜토리얼 구조와 가장 심각한 맵 구조입니다.

 

 


 

 

Tutorial

기존의 구조

기존에 사용하던 구조는 다음과 같은 플로우를 띕니다.

튜토리얼 한 스텝을 담당하는 Tutorial 클래스의 Update를 TutorialManager가 계속해서 실행시켜주고 Update에서 넘어오는 값이 true (현재 튜토리얼의 스텝이 완료 되었다는 뜻)라면 다음 튜토리얼로 넘기는 구조를 사용합니다.

 

수정

나름대로 괜찮은 구조 같아보이지만 조금 수정해야할 이유가 바로 각각의 튜토리얼 스텝들이 모두 MonoBehaviour를 상속받기때문에 생성자 호출 없이 객체를 가져오기 위해 컴포넌트로 추가해야 하기 때문입니다.

 

그렇기 때문에 MonoBehaviour를 때버리고 일반 클래스로 관리해주겠습니다.

 

public abstract class Tutorial
{
    protected TutorialManager _manager;

    public Tutorial(TutorialManager manager)
    {
        _manager = manager;
    }

    public abstract void OnStart();
    public abstract bool UpdateTutorial();
    public abstract void OnEnd();
}

 

혹시 코루틴을 사용하거나 인게임 오브젝트에 상호작용 해야 할때를 대비해서 각각의 Tutorial들은 매니저를 가지고 있게 해줍니다.

 

그리고 이제 TutorialManager를 수정해줍시다.

FSM을 만들 때 썼던 Reflection 코드를 바탕으로 짜주면 됩니다.

private void Awake()
{
    for(int i = 0; i < 9; i++)
    { 
        try
        {
            Type t = Type.GetType($"Tutorial{i}");
            Tutorial tutorial = Activator.CreateInstance(t, this) as Tutorial;

            tutorialList.Add(tutorial);
        }
        catch (Exception e)
        {
            Debug.LogError($"Tutorial{i} is loading error! Massage: {e.Message}");
        }
    }
}

 

 

마지막으로 Update에서 실행만 시켜주면 튜토리얼 끝입니다.

 private void Update()
 {
     if (_currentTutorial.UpdateTutorial())
     {
         _currentTutorial.OnEnd();
         _currnetIndex++;
         _currentTutorial = tutorialList[_currnetIndex];
         _currentTutorial.OnStart();
     }
 }

 

 

 


 

 

마치는 말

첫 글은 가볍게 가볼까요.

맵 구조 수정이 생각보다 길어질 것 같아서 같은 글에 넣기엔 조금 그렇기도 하더라구요.

오늘도 읽어주셔서 감사합니다. 당신이 왔다간 그 방문수 1 자체가 제게 큰 힘이 됩니다.

'개발 > FRACTiLE' 카테고리의 다른 글

[FRACTiLE] | 정적 클래스 기반 Input System과 InputBindingComposite  (10) 2025.04.14
FRACTiLE  (2) 2025.04.13
RE : 격 자 : 세번째 프로젝트 # 2 : 맵 구조 수정  (2) 2024.08.03
RE : 격 자 : 세번째 프로젝트 # 0 : 리메이크? 리워크?  (1) 2024.07.23
격 자 | 세번째 프로젝트  (0) 2024.03.03
'개발/FRACTiLE' 카테고리의 다른 글
  • FRACTiLE
  • RE : 격 자 : 세번째 프로젝트 # 2 : 맵 구조 수정
  • RE : 격 자 : 세번째 프로젝트 # 0 : 리메이크? 리워크?
  • 격 자 | 세번째 프로젝트
SundG0162
SundG0162
블로그 프로필은 머핀입니다.
  • SundG0162
    게임개발고수가될거야
    SundG0162
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • 주저리 (3)
        • 잡담 (2)
        • 장현우 (0)
        • 회고록 (1)
      • 개발 (50)
        • CITADEL : 성채 (1)
        • HEXABEAT (1)
        • FRACTiLE (6)
        • UNNAMED (9)
        • Default Defense (10)
        • T-Engine (1)
        • Project EW (0)
        • 졸업작품 (0)
        • Unity (3)
        • C# (4)
        • C++ (13)
        • WinAPI (1)
        • 그 외 (0)
      • 알고리즘 (13)
        • C# (1)
        • C++ (12)
      • 자료구조 (2)
        • C++ (1)
        • C# (0)
        • 공용 (1)
      • 기타 (10)
        • 아트 (6)
        • AI (2)
        • 수학 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C#
    코드트리
    코딩테스트
    유니티
    코딩
    LLM
    티스토리챌린지
    코딩트리조별과제
    생성형ai
    AI
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
SundG0162
RE : 격 자 : 세번째 프로젝트 # 1 : 튜토리얼 구조 수정
상단으로

티스토리툴바