게임 개발 로그
레스토랑 대소동: 클래스 다이어그램 본문
1. 설거지 시스템
WashingArea
설거지 시스템이 구현되는 공간에 대한 클래스다. WasingArea는 WashingUI, Plate를 참조하여 가지고 있다.
역할
- Plate 풀링: WashingArea는 Plate를 담은 Queue와 List가 있다. 사용 가능한 접시를 Queue에 넣어두고 있으며, 사용할 때는 Queue에서 꺼내서 List에 담는다.
- Plate 생성: WashingArea에는 CreatePoint(Vector3)가 있다. 이 CreatePoint에서 Plate를 생성하는 역할을 한다. Plate를 생성할 때는 난이도(level)에 따라 Plate의 hp와 한번에 생성되는 Plate의 개수를 랜덤성을 적용하여 생성한다.
- Plate 삭제: 현재 선택된 Plate(selectPlate)의 Hp가 0이 되면 해당 Plate를 삭제(풀링에 추가)한다. 이후, 최상단의 그릇이 무엇인지 다시 파악하여 최상단에 위치한 Plate를 selectPlate로 지정한다.
변수
변수명 | 자료형 | 설명 |
plates | List<Plate> | 활성화된 Plate의 목록을 담고 있는 리스트다. |
platesQueue | Queue<Plate> | 비활성화된 Plate의 목록을 담고 있는 리스트다. (풀링) |
selectPlate | Plate | 현재 최상단에 위치한 Plate를 가르킨다. |
plateMaxCnt | const int | 최대 생성할 수 있는 Plate의 개수. 이를 넘어서 설거지가 많아질 수 없다. |
createPoint | Vector3 | 설거지가 생성되는 위치. 설거지 추가 시 이 위치에서부터 추락한다. |
colliderPoint | Vector3 | 설거지가 떨어지다가 멈춰야 하는 위치다. |
createPlateCoroutine | Coroutine | 여러 개의 접시가 한 번에 생성되는 경우 불리는 코루틴이다. 0초만에 n개의 접시가 한번에 생성되면 완전히 겹쳐서 의도하지 않은 방향으로 튕겨내기 때문에 코루틴으로 0.2초 정도의 틈을 주며 생성한다. |
washingUI | WashingUI | 그릇의 생성/삭제를 UI와 함께 제어하기 위해 필요하다. |
level | int | 게임디렉터의 level과 같다. |
difficulty | SODifficulty | 레벨에 따라 변해야 하는 정보를 담은 ScriptableObject다. 설거지 최대 hp, 한번에 생성 가능한 설거지 그릇 수 등의 정보가 들어있다. |
함수
- public
함수명 | 반환 타입 | 설명 |
IsFullDish() | bool | 설거지가 다 찼는지 반환하는 함수다. |
DecreasePlateHp(float) | void | 현재 선택된 그릇(selectPlate)의 hp를 매개변수 값만큼 줄인다. |
SetSelectPlateHpPosition(EventParam) | void | SelectPlate의 position이 변했을 때, 선택된 Plate의 Hp를 표시하는 UI의 위치도 변경해주는 함수다. |
- private
함수명 | 반환 타입 | 설명 |
Reset() | void | 런타임에 불러올 필요가 없는 값들을 미리 넣도록 한다. |
Awake() | void | 이벤트 버스 매니저에 이벤트 타입에 따라 구독자를 넣는다. |
Start() | void | Reset에서 저장한 값들의 정보를 바탕으로 계산/변경되어야 할 변수들을 처리한다. |
OnLevelUp(EventParam) | void | 레벨이 증가됨에 따라 level과 difficulty 값을 수정한다. |
OnComboEvent (EventParam) |
void | 콤보 발생 시 활성화되어 있는 설거지 그릇을 전부 삭제(풀링에 추가)한다. |
OnAddPlate (EventParam) |
void | n개만큼 설거지를 추가하는 함수다. 현재 선택된 그릇의 hp가 가득 차있으면 위에서부터 설거지가 떨어지고, hp가 0보다 크되 가득 차지 않았으면 아래서부터 그릇이 추가된다. |
AddPlate(int n) | void | 그릇을 위에서부터 추가하는 함수다. 즉, CreatePoint에서부터 그릇이 생성되어 떨어질 수 있도록 한다. |
PutInPlate() | void | 그릇을 아래에서부터 추가하는 함수다. 활성화되어 있는 그릇을 위로 옮기고, 그 아래로 설거짓거리를 추가한다. |
GetRandomHpCount() | int | 레벨에 따라 새로 생성될 Plate의 Hp를 결정하고 리턴한다. |
GetRandomCreatePlate Count() |
int | 레벨에 따라 새로 생성될 Plate의 개수를 결정하고 리턴한다. |
OnSuccessWashing (EventParam) |
void | 설거지에 성공했을 경우 호출되는 함수로, selectPlate의 Hp를 EventParam으로 전해지는 양만큼 줄이고, 만약 hp가 0보다 작아질 경우 selectPlate를 삭제한다. |
SelectPlate() | void | 가장 최상단에 있는 그릇이 무엇인지 검사하여 selectPlate를 다시 결정하는 함수다. |
CreatePoolingObjects() | void | 게임 시작 시에 Plate를 최대 개수만큼 생성하여 Queue에 담아두는 함수다. |
ICreatePlates() | IEnumerator | 여러 개의 접시가 한 번에 생성되는 경우 불리는 코루틴이다. 0초만에 n개의 접시가 한번에 생성되면 완전히 겹쳐서 의도하지 않은 방향으로 튕겨내기 때문에 코루틴으로 0.2초 정도의 틈을 주며 생성한다. |
이벤트 목록
private void Awake()
{
Managers.Instance.Event.Subscribe(EEventType.SuccessWash, OnSuccessWashing);
Managers.Instance.Event.Subscribe(EEventType.CorrectOrder, OnAddPlate);
Managers.Instance.Event.Subscribe(EEventType.LevelUp, OnLevelUp);
Managers.Instance.Event.Subscribe(EEventType.SetPlateHpPosition, SetSelectPlateHpPosition);
Managers.Instance.Event.Subscribe(EEventType.FoodComboEvent, OnComboEvent);
}
- SuccessWash 이벤트 발생 시: 현재 선택된 Plate의 Hp를 줄인다. 선택된 Plate의 Hp가 0이 되면 현재 선택된 plate를 삭제(풀링에 추가)하고, 최상단 Plate가 무엇인지 검사하여 최상단 Plate를 selectPlate로 지정한다.
- CorrectOrder 발생 시: CorrectOrder는 손님이 요구한 주문에 맞게 요리를 준비했다는 뜻이다. 주문을 성공했으면 설거지가 발생한다. 그래서 CorrectOrder 이벤트가 발생하면 WashingArea에서는 OnAddPlate() 기능이 발생한다. 말 그대로 설거지가 추가되는 기능이다.
- LevelUp 발생 시: WashingArea의 Level을 LevelUp 이벤트에서 따라온 EventParam의 Level로 수정한다. 이 레벨에 따라 설거지가 생성될 때 Plate의 Hp나, 한번에 생성되는 Plate의 개수가 달라진다.
- SetPlateHpPostion 발생 시: 가장 최상단 Plate가 삭제되었을 때나, 새로운 Plate가 추가되었을 때 이 이벤트가 발생한다. SetSelectPlateHpPostion()이라는 함수는 SelectPlate의 Hp를 나타내는 UI를 현재 최상단 접시의 위치로 옮겨주는 함수다. (최상단 접시가 바로 SelectPlate가 된다.)
- FoodComboEvent 발생 시: OnCombeEvent 함수는 콤보가 발생되었을 때 그릇을 깨끗히 비우는 역할을 한다. 즉, 화면에 표시되고 있는 설거지들을 모두 풀링에 넣는다는 의미다.
WashingUI
설거지 관련 UI를 위한 클래스다. 특정 영역의 좌우로 움직이는 인디케이터와 퍼펙트 존, 최상단 접시의 HP 등을 표시한다.
역할
- UI 움직임: PerfectZone, Indicator 등을 좌우로 움직인다.
- 설거지 성공/실패 시 효과: 성공 시 인디케이터 위치에 이펙트를 출력하고, 실패 시 UI에 진동을 준다.
- Hp 감소량 결정: 선택된 설거지 그릇의 Hp 감소량을 인디케이터와 퍼펙트 존의 위치를 비교하여 결정한다. 즉, 인디케이터가 퍼펙트 존의 가운데 영역에 가까울수록 더 많은 양이 감소한다.
변수
변수명 | 자료형 | 설명 |
actionBar | Image | 인디케이터가 좌우로 움직일 수 있는 영역이다. |
perfectZone | Image | 설거지 성공/실패를 판단할 수 있는 영역이다. 인디케이터가 이 안에 들어와야 성공으로 판단한다. 좌우로 움직인다. |
indicator | Image | 좌우로 움직이는 영역이다. |
wrongImage | Image | 설거지 실패 시 actionBar의 색상을 이 Image의 색상으로 잠시 변경한다. |
plateHp | Image | 현재 선택된 Hp를 UI로 보여주기 위한 Image다. 선택된 설거지 그릇이 있을 때만 화면에 나타난다. |
successEffect | ParticleSystem | 성공 시 인디케이터 위치에서 재생되는 Effect다. |
indicatorObj | MovingObject | indicator의 RectTransform, 움직이는 Speed, 움직이는 방향(dir) 등을 담고 있는 구조체(클래스)다. |
perfectzoneObj | MovingObject | perfectZone의 RectTransform, 움직이는 Speed, 움직이는 방향(dir) 등을 담고 있는 구조체(클래스)다. |
actionZone | RectTransform | 인디케이터가 움직일 수 있는 영역이 되는 actionBar의 RectTransform이다. |
coWrongEffect | Coroutine | 실패 시 1초 동안 인풋을 받을 수 없다. 이 기능을 처리하는 코루틴이 진행 중인지, 아닌지 판단하기 위한 변수다. |
coSetPlateHp | Coroutine | 선택된 그릇의 Hp가 감소할 때 선형보간으로 감소하도록 코루틴을 실행한다. 이 코루틴이 진행 중인지, 아닌지 판단하기 위한 변수다. |
actionZoneSize | LineSize | actionZone의 왼쪽(min), 오른쪽(max) 좌표를 가지고 있는 변수다. |
decreaseAmount | float | Hp의 감소량이다. 인디케이터가 퍼펙트 존의 가운데에 위치할수록 감소량이 커진다. |
difficulty | SODifficulty | 레벨에 따라 달라지는 값을 모은 Scriptable Object다. 설거지 성공 시의 감소량이 달라진다. |
level | int | 시간이 지남에 따라 증가하는 레벨이다. |
함수
- public
함수명 | 반환 타입 | 설명 |
SetPlateHpPosition (Vector3) |
void | 선택된 설거지 그릇의 Hp를 나타내는 UI의 위치를 조정하는 함수다. SelectPlate 위에 표시될 수 있도록 UI 위치를 조정한다. |
SetPlateHpFillAmount(float) | void | Plate Hp를 나타내는 UI의 Fill Amount를 매개변수 만큼 채울 수 있도록 하는 함수다. |
FillHpFull() | void | Plate Hp를 나타내는 UI를 가득 채우는 함수다. |
- private
함수명 | 반환 타입 | 설명 |
Reset() | void | 런타임에 불러올 필요가 없는 값들을 미리 넣도록 한다. |
Awake() | void | 이벤트 버스 매니저에 이벤트 타입에 따라 구독자를 넣는다. |
Start() | void | Reset에서 저장한 값들의 정보를 바탕으로 계산/변경되어야 할 변수들을 처리한다. |
Update() | void | 게임 진행 시 계속 업데이트 되어야 하는 함수를 부른다. MoveIndicator(), MovePerfectzone() 함수를 부른다. |
OnLevelUp (EventParam) |
void | EventParam으로 전해지는 level과 difficulty를 받아온다. |
OnWashTheDish() | void | 엔터를 누를 때 호출되는 함수다. 인디케이터와 퍼펙트 존의 위치를 비교하여 설거지 성공이면 성공 이펙트 실행과 이벤트 버스의EventType.SuccessWash를 호출한다. 설거지 실패면 실패 효과를 주는 코루틴을 실행한다. |
WrongAnswer Effect() |
IEnumerator | 설거지를 실패했을 때 시작되는 코루틴이다. 1초 동안 UI에 진동을 주고 인풋을 받지 못 하게 된다. |
IsWashingSuccess | bool | 엔터가 눌렸을 때 성공했는지 여부를 판단하는 함수로, bool 값을 리턴한다. |
MoveIndicator | void | 인디케이터를 움직인다. |
MovePerfectzone() | void | 퍼펙트 존을 움직인다. |
SetPlateHp(float) | IEnumerator | 선택된 Plate의 Hp를 나타내는 UI를 변경하는 함수다. float 값을 받아와서 그 float 값만큼 Fill Amount를 변경한다. |
이벤트 목록
private void Awake()
{
Managers.Instance.Event.Subscribe(EEventType.LevelUp, OnLevelUp);
}
- LevelUp 이벤트 발생 시: EventParam으로 전달되는 Level과 SODifficulty를 받아온다.
Plate
풀링 오브젝트로서 활성화/비활성화 상태를 가지고 있는 객체다. 설거지 공간에 존재하는 설거지 그릇 클래스이다.
역할
- Hp 관리: Hp를 가지고 있어서 Hp량에 따라 삭제되어야 하는지를 판단한다.
- 풀링으로 생성/소멸: 풀링을 하기 위해 Active()를 할 때와 DeActive()를 할 때의 처리를 한다.
- Off Kinematic: 충돌되고 일정 시간(1초)가 지나면 키네마틱을 끈다. 1초 뒤에도 물리 효과를 켜 둔다면 충돌 시마다 위치가 조금씩 변경되어 떨어지거나 튕겨나갈 수 있기 때문이다.
변수
변수명 | 자료형 | 설명 |
CurHp | float | public 변수로, 현재 hp 정보를 담고 있다. |
MaxHp | float | public 변수로, 최대 hp 정보를 담고 있다. |
isSelected | bool | public 변수로, 이 그릇이 선택되어 있는지 정보를 담고 있다. |
dustParticle | ParticleSystem | Hp가 1에 가까우면 dust Particle을 보여준다. 더러운 효과를 내기 위함이다. |
sineParticle | ParticleSystem | Hp가 0에 가까우면 sine Particle을 보여준다. 깨끗한 효과를 내기 위함이다. |
curHp | float | 현재 hp 정보를 담고 있는 private 변수다. |
maxHp | float | 최대 hp 정보를 담고 있는 private 변수다. |
isActive | bool | 활성화되어 있는지 여부를 담고 있는 변수다. |
createPoint | Vector3 | 그릇이 생성되어야 하는 위치를 담고 있는 변수다. |
함수
- public
함수명 | 반환 타입 | 설명 |
Active(float Hp) | void | 풀링에서 꺼내 쓸 때 활성화하는 함수다. Particle 실행, Hp 조정, 포지션 초기화 등의 기능을 수행한다. |
DeActive() | void | 파티클을 멈추고, 게임 오브젝트 표시를 비활성화하는 함수다. |
SetCreatePoint(Vector3) | void | 생성 위치를 매개변수의 위치로 설정하는 함수다. |
DecreasePlateHp(float) | void | 매개변수만큼 해당 그릇의 hp를 줄이는 함수다. |
- private
함수명 | 반환 타입 | 설명 |
IRandomCreateParticle | void | 활성화되어 있을 때 특정 시간마다 랜덤 위치에 파티클을 생성하는 함수다. |
IOffPlateKinematic() | void | 충돌 이벤트가 발생하고 1초 뒤에 Kinematice을 끄기 위한 코루틴이다. |
OnCollisionEnter(Collision) | void | 충돌이 되었을 경우 위의 코루틴을 발생시키고, Hp UI를 조정하는 EventType.SetPlateHpPosition을 발생시키는 함수다. |
이벤트 목록
private void Awake()
{
Managers.Instance.Event.Subscribe(EEventType.LevelUp, OnLevelUp);
}
- LevelUp 이벤트 발생 시: EventParam으로 전달되는 Level과 SODifficulty를 받아온다.
2. 매니저
Managers
구현된 매니저에 쉽게 접근 가능하도록 통합한 클래스다. EventBusManager, DataManager, InputManager를 생성하여 가지고 있다.
역할
- Manager 접근: 구현된 매니저를 모두 생성하고 가지고 있어서 Managers.Instance로 모두 접근 가능하다.
- Manager 생성: 언제 어디서 불리든, 호출 시에 Managers의 Instance가 만들어지며 EventBusManager, DataManager, InputManager 등도 함께 생성된다.
변수
변수명 | 자료형 | 설명 |
s_instance | static Manaegers | private 변수로, 생성된 instance 그 자체이다. |
Instance | static Managers | public 변수로, 생성된 s_instance를 반환한다. |
_data | DataManager | DataManger를 생성하여 담고 있는 변수다. |
_event | EventBusManager | EventBusManager를 생성하여 담고 있는 변수다. |
_input | InputManager | InputManager를 생성하여 담고 있는 변수다. |
Data | DataManager | _data를 리턴하는 public 변수다. |
Event | EventBusManager | _event를 리턴하는 public 변수다. |
Input | InputManager | _input을 리턴하는 public 변수다. |
함수
- private
함수명 | 반환 타입 | 설명 |
Start() | void | 시작 시에 Init()을 호출한다. |
Update() | void | 매 업데이트마다 _input.OnUpdate()를 호출한다. 인풋을 매 업데이트마다 받기 위함이다. |
Init() | static void | s_instance가 null이라면 새롭게 Managers를 생성하는 함수다. |
EventBusManager
이벤트를 관리하기 위한 매니저다. 이벤트 타입에 따라 구독자를 추가, 삭제함으로서 한 가지의 이벤트가 발생했을 때 여러 구독자에게 이벤트를 전달할 수 있다. 이벤트 발생 시 EventParam이라는 매개변수를 전달하고 있기 때문에, 이벤트 발생 시 필요한 정보까지 전달할 수 있다.
역할
- 이벤트 관리: Events에 관리되어야 하는 이벤트 목록이 들어 있다.
- 구독자 추가/삭제: Subscribe, Unsubscribe로 이벤트 타입에 따라 구독자를 추가, 삭제할 수 있다.
- 이벤트 호출: Publish를 호출하여 해당 이벤트의 구독자들 함수를 호출할 수 있다.
- 이벤트 발생 시 정보 전달: 이벤트 발생 시 EventParam을 전달 가능하기 때문에 필요한 정보를 함께 전달할 수 있다.
변수
변수명 | 자료형 | 설명 |
Events | IDictionary<EEventType, UnityEvent<EventParam>> | 타입에 따라 이벤트를 담아두는 딕셔너리다. |
함수
- public
함수명 | 반환 타입 | 설명 설명 |
Subscribe(EEventType, UnityAction <EventParam>) |
void | 이벤트 타입에 구독자 함수를 추가하는 함수다. |
Unsubscribe(EEventType) | void | 이벤트 타입에 있는 모든 구독자를 삭제하는 함수다. |
Publish(EEventType, EventParam) | void | 이벤트를 발생하는 함수다. |
Clear() | void | 모든 이벤트를 삭제하는 함수다. 현재는 씬 변경 시마다 호출되도록 하고 있다. |
DataManager
데이터를 관리하기 위한 매니저다. Json 파일로 Save & Load가 가능하다.
역할
- 데이터 저장: 현재까지의 게임 진행 상황을 Json 파일로 저장한다.
- 데이터 불러오기: 저장된 Json 파일을 불러와서 게임 진행 상황에 적용할 수 있도록 한다.
함수
- public
함수명 | 반환 타입 | 설명 |
SaveJsonData(string jsonData, string filePath) | void | jsonData와 filePath를 매개변수로 받아와서 해당 파일 위치에 jsonData를 저장한다. |
LoadJsonData(string filePath) | string | 파일 위치에 있는 Json을 받아와서 string으로 변환한 뒤 반환하는 함수다. |
InputManager
입력을 관리하기 위한 매니저다. 많은 키가 겹쳤을 때 한 번에 입력 처리가 가능하도록 해준다.
역할
- 입력 처리: 입력을 한번에 처리 가능하도록 한다.
변수
변수명 | 자료형 | 설명 |
KeyAction | Action | 입력된 키에 따른 함수들을 저장하는 액션이다. |
함수
- public
함수명 | 반환 타입 | 설명 |
OnUpdate() | void | 어떠한 Key Input이 들어왔을 때 KeyAction에 포함된 Action들을 Invoke(실행)한다. |
3. Effect 관련
PlayerController
플레이어(유저)가 클릭할 때마다 클릭 이펙트를 생성하는 컨트롤러 클래스다. 클릭 인풋을 받는 역할을 한다.
역할
- 입력에 따른 기능: 클릭 시 클릭 이펙트를 출력하도록 한다.
변수
변수명 | 자료형 | 설명 |
clickEffect | GameObject | 클릭 시에 만들어져야 하는 파티클 프리팹(게임 오브젝트)를 담고 있다. |
함수
- private
함수명 | 반환 타입 | 설명 |
Start() | void | Managers.Instance.Input.KeyAction에 PlayEffect() 함수를 추가한다. |
PlayEffect() | void | 마우스 버튼이 눌렸는지 검사하고, 마우스 버튼이 눌렸다면 풀링 매니저를 통해 클릭 이펙트를 추가한다. |
TouchEffect
클릭 시에 생성되는 Effect 클래스다.
역할
- 파티클 재생
- 파티클 재생 종료 시 풀링
변수
변수명 | 자료형 | 설명 |
type | string | 풀링 매니저에서 타입 파악을 위한 string 변수다. |
particle | ParticleSystem | 생성 시 재생되는 Particle이다. |
함수
- public
함수명 | 반환 타입 | 설명 |
GetObjType() | string | 풀링 매니저에서 사용하는 함수다. |
- private
함수명 | 반환 타입 | 설명 |
Awake() | void | 파티클시스템을 GetComponenet로 담아 온다. |
OnEnable() | void | 활성화 시 particle을 재생한다. |
Update() | void | 파티클의 재생이 끝났는지 검사한다. 끝났다면 풀링에 추가한다. |
OrderDishEffect
음식을 제출하는 그릇의 Effect 기능을 구현한 클래스다. 주문 실패 시 해당 그릇 진동 + 색 변환 효과를 주고, 설거지 그릇이 가득 차서 음식 제출이 불가능한 상황에는 설거지 하라는 UI를 띄운다.
역할
- 주문 실패 시 진동: 주문 실패 시 그릇 진동 + 색 변환을 해서 가시적 효과를 준다.
- UI 생성: 음식 제출이 불가능한 경우 설거지를 하라는 UI를 출력한다.
변수
변수명 | 자료형 | 설명 |
textUI | GameObject | 설거지가 가득 찼다는 팝업 UI를 담고 있는 프리팹 게임 오브젝트이다. |
coPlayWrong | Coroutine | 주문 실패 시에 실행되는 Coroutine을 담는 변수다. 이미 Coroutine이 실행 중인지 판단을 위한 변수다. |
render | Renderer | 그릇 머터리얼의 색 변경을 위한 Renderer 정보다. |
effectOjb | GameObject | textUI(프리팹)가 생성된 Object를 담는 변수다. 만약 이미 생성되어 있으면 그것을 삭제한 뒤 다시 생성한다. |
함수
- public
함수명 | 반환 타입 | 설명 |
ShowFullDishEffect(EventParam) | void | 설거지 그릇이 가득 찼는데 음식 제출하는 경우 호출되는 함수로, 음식이 가득 찼다는 UI를 생성, 출력한다. (이미 UI가 생성되어 있는 경우에는 삭제 후 재생성) |
PlayWrongEffect (EventParam) |
void | 주문 실패할 경우 호출되는 함수로, 실패 효과 코루틴(PlaySwing)을 실행한다. |
- private
함수명 | 반환 타입 | 설명 |
Awake() | void | Managers.Instance.Event에 구독자를 추가한다. |
Start() | void | 시작 시 받아와야 하는 정보를 받아온다. |
PlaySwing | IEnumerator | 음식 제출 실패 시 그릇 진동 효과 + 색 변경 효과를 주는 코루틴이다. 1초 동안 진동 + 색 변경 효과를 준다. |
이벤트 목록
private void Awake()
{
Managers.Instance.Event.Subscribe(EEventType.FailOrder, PlayWrongEffect);
Managers.Instance.Event.Subscribe(EEventType.FailofFullDish, ShowFullDishEffect);
}
- FailOrder 이벤트 발생 시: 진동 + 색 변경 효과를 준다.
- FailofFullDish 이벤트 발생 시: 설거지 그릇이 가득 차서 제출을 할 수 없다는 UI를 출력한다.
4. Data 관리
UserDataDirector
유저 데이터를 저장, 불러오기하는 디렉터다. 게임 씬에서만 사용되는 것으로, 매니저가 아니다. 싱글 모드, 멀티 모드를 나누어 저장 데이터를 관리한다. cPlayer는 점수, 캐릭터 타입, 성공한 손님 수 정보를 담고 있는 클래스(구조체)이고, UserDataDirector는 이 정보를 담은 UserData를 SingMode와 MultiMode로 나누어서 가지고 있다.
역할
- 게임 저장
- 게임 불러오기
변수
변수명 | 자료형 | 설명 |
singleUserData | UserData | 1인 모드의 점수를 저장하는 구조체다. 점수가 높은 5명의 정보를 저장한다. |
multiUserData | UserData | 2인 모드의 점수를 저장하는 구조체다. 점수가 높은 5팀의 정보를 저장한다. |
함수
- public
함수명 | 반환 타입 | 설명 |
Init() | void | 싱글/멀티의 저장 정보가 있다면 해당 정보를 불러오는 함수다. 시작 시에 불린다. |
Load() | void | 싱글/멀티의 저장 정보를 받아온다. |
SaveSingleMode() | void | singleMode의 파일 패스에 현재 플레이어의 정보를 저장한다. |
SaveMultiMode() | void | multiMode의 파일 패스에 현재 플레이어의 정보를 저장한다. |
- private
함수명 | 반환 타입 | 반환 타입 |
Save(bool isSingle) | void | single 모드 여부에 따라 실질적으로 저장하는 코드를 넣은 private 함수다. |
Compare(cPlayer, cPlayer) | int | 유저간의 등수 비교를 하는 Compare 함수다. cPlayer의 점수로 등수 비교를 한다. |
5. Ect
UI에서도 Text 효과를 위해 구현한 클래스(PopupTextUI, StartTextUI)들과 TitleScene에서 글자가 깜빡이는 효과, 스크립트 출력 효과 등을 위해 구현한 클래스(TitleSceneUI)이다.
'게임 개발 > 레스토랑 대소동' 카테고리의 다른 글
레스토랑 대소동: 개발 노트 #13 (0) | 2024.11.27 |
---|---|
레스토랑 대소동: 개발 노트 #12 (0) | 2024.11.27 |
레스토랑 대소동: 개발 노트 #11 (0) | 2024.11.24 |
레스토랑 대소동: 개발 노트 #10 (0) | 2024.11.24 |
레스토랑 대소동: 개발 노트 #9 (0) | 2024.11.24 |