- 앱 실행 후 인게임에 들어가기 전까지
- GM : 제한 시간(10분) 카운트 다운 시작
- 플레이어 : 생성
- 플레이어 : 이동
- 맵 컨트롤 : 플레이어가 이동 가능한 구간을 통제
- 플레이어 : 이동 가능한 구간에서만 이동
- 플레이어 : 공격
- 플레이어 : 무기 변경
- 몬스터 : AI 이동
- 몬스터 : 플레이어가 사정거리로 왔을 시 자동 공격
- 몬스터 : 사망
- 몬스터 : 사망시 코인 드랍 이벤트 발생,
- 플레이어 : 몬스터 사망시 코인 드랍 이벤트를 통해 코인 획득
- 플레이어 : 사망
- NPC : 플레이어와 대화
- NPC : 코인으로 무기 구매
- NPC : 도움말
- GM : 제한 시간(10분) 끝나면 PVP 맵으로 이동
- GM : 승리 조건
- Legend
- block : object
- italic : message
- 앱 실행 후 인게임에 들어가기 전까지
- 타이틀 아래에서 (UI)"Touch To Start"가 깜빡 거림
Animator⇒Touch To Start(UI): Play() : void
- (UI)"Touch To Start"를 터치하면 3초 후 메인 씬으로 화면 전환
유저⇒Button: 화면 터치Button⇒SceneLoader: OnClick() : voidSceneLoader⇒SceneLoader: OnPlayGame() : voidSceneLoader=>SceneManager: LoadScene() : void
- 화면 전환할 때 3초 동안 Fade out
SceneLoader⇒Animator: Fadeout() : IEnumeratorAnimator⇒BlackView(UI): Play() : void
- 타이틀 아래에서 (UI)"Touch To Start"가 깜빡 거림
- 제한 시간(10분) 카운트 다운 시작
- 게임 시작과 동시에 화면 상단 중앙에서 "10 : 00(UI)"가 1초씩 감소
GameManager⇒GameManager: Start() : voidGameManager⇒RemainingTime(UI): CountDown() : void
- 게임 시작과 동시에 화면 상단 중앙에서 "10 : 00(UI)"가 1초씩 감소
- 플레이어 생성
- 게임 시작 전 플레이어 이름 입력
유저⇒InputField: 입력InputField⇒StartData: SavePlayerData- InputField에 입력한 이름 데이터를 PlayerPrefs에 저장
- 입력한 플레이어 이름을 머리 위에 띄우며 플레이어 생성
Player⇒GameManager: CreatePlayer- Player(Prefab) 생성
Player⇒Player: GetPlayerData- PlayerPrefs에 저장된 Name 값을 Player의 Name 값에 할당
Player⇒PlayerUI: InitPlayerUI()- Player의 Name 값으로 TMP text 값 초기화
- 게임 시작 전 플레이어 이름 입력
- 플레이어 이동
- 방향키 클릭 시 해당 방향키 정보를 Player 객체에 전달
InputController⇒Player: DirectionInputEventHandler((Enum)InputInfo)- 버튼 클릭 시 해당 방향 값을 이벤트를 통해 Player 객체에 전달
Player⇒Player: UpdateDestination((Enum)InputInfo) : void- 해당 방향으로 도착지 위치를 변경한다.
Player⇒Player: UpdatePostion() : void- 도착지로 부드럽게 이동한다.
- 방향키 클릭 시 해당 방향키 정보를 Player 객체에 전달
A : 피객체(객체가 원하는 데이터를 가지고 있음) B : 피객체의 데이터를 가지고 작업하는 객체 => : B에서 작성된 메서드이고 B가 A를 참조한다.
이름 정보 이외에 데이터(GameManager가 가지고 있는 값)들을 토대로 생성하기를 원함
데이터를 저장하고 와서 데이터를 가지고 다양한 처리를 담당하는 매니저 => GameManager
플레이어의 속성 값과 속성 값을 가지고 실제 행동을 담당하는 클래스 => Player