게임 개발 로그

레스토랑 대소동: 개발 노트 #12 본문

게임 개발/레스토랑 대소동

레스토랑 대소동: 개발 노트 #12

03:00am 2024. 11. 27. 01:04

클릭 이펙트를 추가한 화면

 

TO DO LIST

타이틀 씬

  • press the any key ✔️
  • 영업 시작 버튼도 누를 수 있고 키도 누를 수 있도록 변경하기 ✔️
  • 시놉시스 폰트 배경 어두운 색으로

로비 씬

  • 클릭 시 이펙트 ✔️
  • 인풋 매니저 만들기 ✔️

튜토리얼 씬

  • 설거지 크기 줄이기 ✔️
  • 강조하는 곳 깜빡거리게 하기
  • 설거지 할 타이밍에만 배경 깜빡거리게 바꾸기, 대사 연속으로 나오게 하기 인 게임
  • 설거지 hp를 fill amount로 만들기
  • 설거지 가득 찼을 때 제출 안 되면 ui 팝업으로 가득 찼다고 알리기

 

0. 구현

0-1. Managers

public class Managers : MonoBehaviour
{
static Managers s_instance;
public static Managers Instance { get { Init(); return s_instance; } }
private readonly DataManager _data = new DataManager();
private readonly EventBusManager _event = new EventBusManager();
private readonly InputManager _input = new InputManager();
public DataManager Data => Instance != null ? Instance._data : null;
public EventBusManager Event => Instance != null ? Instance._event : null;
public InputManager Input => Instance != null ? Instance._input : null;
private void Start()
{
Init();
}
private void Update()
{
_input.OnUpdate();
}
static void Init()
{
if (s_instance == null)
{
GameObject go = GameObject.Find("@Managers");
if (go == null)
{
go = new GameObject { name = "@Managers" };
go.AddComponent<Managers>();
}
DontDestroyOnLoad(go);
s_instance = go.GetComponent<Managers>();
}
}

 

 

0-1. InputManager

public class InputManager
{
public Action KeyAction = null;
public void OnUpdate()
{
if (Input.anyKey == false)
return;
if (KeyAction != null)
KeyAction.Invoke();
}
}

 

 

0-2. ClickEffect

  • PlayerController (클릭 시 이펙트를 인스턴스화하는 역할)
public class PlayerController : MonoBehaviour
{
[SerializeField] public GameObject clickEffect;
private void Start()
{
Managers.Instance.Input.KeyAction -= PlayEffect;
Managers.Instance.Input.KeyAction += PlayEffect;
}
private void Update()
{
PlayEffect();
}
private void PlayEffect()
{
if ((Input.GetMouseButtonDown(0)))
{
BAEK.SoundManager.sInstance.PlayButtonClick();
Vector3 point = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,
Input.mousePosition.y, -Camera.main.transform.position.z));
GameObject effect = Instantiate(clickEffect, point, Quaternion.identity);
}
}