
오늘은 마감 날이였기 때문에 별로 안건드릴 생각이었다.
근데 하다보니 이것저것 하게 되서 생각보다 시간이 촉박했다.
이것때문에 어제 12시까지 작업을 해서 겨우 고쳤는데
특정 상황에서 (모든 스테이지를 클리어하고 다시 마지막 스테이지로 가서 클리어 했을때)
불러오기의 마지막 스테이지 버튼이 하나 더 생기는 문제가 발생하였다.
SaveData saveData = SaveSystem.LoadGame();
HashSet<int> availableStages = new HashSet<int>(saveData.clearedStages)
{
saveData.currentStage // 현재 진행 중인 스테이지도 포함
};
if (!stageManager.CheckClear())
{
foreach (int stage in availableStages)
{
Button newButton = Instantiate(loadButtonPrefab, buttonContainer);
newButton.GetComponentInChildren<TextMeshProUGUI>().text = (stage + 1).ToString();
newButton.onClick.AddListener(() => stageManager.LoadStage(stage));
}
}
팀원분의 생각대로 list를 HashSet으로 변경하니까 해당 오류가 수정되었다.
HashSet으로 중복된 값은 자동으로 제거되기 때문에 위의 문제가 깔끔하게 해결될 수 있었다.
기존 타이틀 씬에서는 나가기 버튼이 없었는데 이 부분을 추가해주었다.
if (exitGameButton != null)
exitGameButton.onClick.AddListener(stageManager.OnApplicationQuit);
------------------------------------------------------------------------
public void OnApplicationQuit()
{
isStage = false;
PlayerPrefs.SetFloat(timeKey, time);
PlayerPrefs.Save();
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
나가기 버튼을 하나 추가해주고 OnApplicationQuit를 연결해주었다.
또 유니티 에디터에서 실행시에는 종료되게 하는 코드도 추가해주었다.

기존에는 인게임에서 타이틀 화면으로 나가거나 즉시 다시 시작하는 기능 없었다.
이 부분은 필요하다고 판단해서 빠르게 추가해보았다.
public void OnInGameUI(InputAction.CallbackContext context)
{
isEnabled = !isEnabled;
ingameUI.SetActive(isEnabled);
Cursor.lockState = isEnabled ? CursorLockMode.None : CursorLockMode.Locked;
CharacterManager.Instance.Player.Controller.cursorInputForLook = !isEnabled;
CharacterManager.Instance.Player.Controller.look = isEnabled ? Vector2.zero : CharacterManager.Instance.Player.Controller.look;
Time.timeScale = isEnabled ? 0f : 1f;
}
백틱키를 통해(1 옆에 있는거) 인게임 UI를 토글할 수 있게 만들었고
isEnabled 상태에 따라서 커서와 타임스케일, 플레이어의 움직임을 제어해주었다.


https://www.youtube.com/watch?v=pdtYMgZHiv4
이번 팀 과제는 너무 재밌게 진행했던 것 같다.
좋은 팀원들과 같이 작업하니까 2배는 재밌었다.
물론 어려웠던 부분도 많이 있었지만 최종 결과물을 보니 꽤나 만족스러웠다.
마지막에 빌드를 못한것은 좀 아쉽지만 그래도 나름 괜찮게 만든 것 같아서
개인적으로도 만족도가 높았던 팀 프로젝트였던 것 같다.