목차
멋쟁이사자처럼 로켓단 인턴쉽
25.08.11
회의록
>> 안건
- 업무 업데이트
- 질문 혹은 피드백 요청
- 주요 안건
- 기능구현, 로직구체화 회의마무리
- 선제작업 일감 선정 및 업무분담
- 향후 마일스톤
- 프로토타입 개발시작
게임 UI 확정
: 아래 사진과 같은 UI로 만들기로 결정했다.
- 일과 시간을 시계로 표현
- 일과 시간에 따라 흐른 Day 수를 탁상 달력으로 표현
- 점수와 배율을 표시하고, 그 점수가 신기록이라면 위에 "New Record!" 가 표시된다.
일감 분배
: 우선 다음과 같이 일감을 생성했다.
- 게임 진행 제어 (GameManager)
- 서류, 장애물 SO제작
- 서류 분류 판정
- 아트 리소스 제작
- UI 관리자 (UI Manager)
- 시간제어 컨트롤 및 게임오버
- 필수 UI배치
- 메인화면UI
--> 이 중에서 UI Manager를 만드는 일감을 분배받았다.
UI Manager 만들기
: 기존에 계획한 게임구조는 아래와 같다.
--> UI Manager가 PanelController와 PopupController를 제어하고, 각 Controller에서 Panel과 Popup을 관리하도록 구현 예정
>> 작성 중인 코드 (미완성)
1. Singleton.cs
: 다른 팀원 분께서 작성함
using UnityEngine;
using UnityEngine.SceneManagement;
public abstract class Singleton<T> : MonoBehaviour where T : Component
{
private static T _instance;
public static T Instance
{
get
{
if (_instance == null)
{
_instance = FindObjectOfType<T>();
if (_instance == null)
{
GameObject obj = new GameObject();
obj.name = typeof(T).Name;
_instance = obj.AddComponent<T>();
}
}
return _instance;
}
}
private void Awake()
{
if (_instance == null)
{
_instance = this as T;
DontDestroyOnLoad(gameObject);
}
Initialize();
}
protected virtual void Initialize()
{
}
}
2. UIManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UIManager : Singleton<UIManager>
{
[SerializeField] private PanelController panelController;
[SerializeField] private PopupController popupController;
protected override void Initialize()
{
base.Initialize();
// 초기화 로직
}
public void OpenPanel(GameObject panel) => panelController.OpenPanel(panel);
}
3. PanelController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PanelController : MonoBehaviour
{
[Header("패널 관리")]
[SerializeField] private GameObject mainPanel;
[SerializeField] private GameObject gamePanel;
[SerializeField] private GameObject pausePanel;
private List<GameObject> panels;
private void Awake()
{
panels = new List<GameObject> { mainPanel, gamePanel, pausePanel };
OpenPanel(mainPanel);
}
public void OpenPanel(GameObject targetPanel)
{
foreach (var panel in panels)
{
panel.SetActive(panel == targetPanel);
}
}
}
4. PopupController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PopupController : MonoBehaviour
{
[Header("팝업 관리")]
[SerializeField] private GameObject tutorialPopup;
[SerializeField] private GameObject resultPopup;
private List<GameObject> popups;
private void Awake()
{
popups = new List<GameObject> { tutorialPopup, resultPopup };
}
public void OpenPopup(GameObject targetPanel)
{
foreach (var panel in popups)
{
panel.SetActive(panel == targetPanel);
}
}
public void ClosePopup()
{
}
}
'Development > Internship' 카테고리의 다른 글
[멋사 로켓단 인턴쉽] 6일차 - Audio Manager 제작 (4) | 2025.08.14 |
---|---|
[멋사 로켓단 인턴쉽] 5일차 - UI Manager (2) | 2025.08.12 |
[멋사 로켓단 인턴쉽] 3일차 - 게임 구조 설계 (1) | 2025.08.08 |
[멋사 로켓단 인턴쉽] 2일차 - 기획 (3) | 2025.08.07 |
[멋사 로켓단 인턴쉽] 1일차 - 아이디어 회의 (5) | 2025.08.06 |