게임 개발 로그

레스토랑 대소동: 개발 노트 #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);
         }
     }