From c262b9e2f703308c5410167f14f0878ab32cac55 Mon Sep 17 00:00:00 2001 From: HaeinLEE Date: Mon, 28 Apr 2025 21:24:43 +0900 Subject: [PATCH] =?UTF-8?q?[Feat]=20=EC=BB=B7=EC=94=AC=20=EC=9E=90?= =?UTF-8?q?=EB=8F=99=20=EA=BA=BC=EC=A7=90=20=EA=B8=B0=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/LIN/Housing Copy.unity | 4 +- .../LIN/Scripts/UI/HousingCanvasController.cs | 4 ++ Assets/LIN/Scripts/UI/HousingConstants.cs | 3 +- .../UI/InteractionAnimationPanelController.cs | 57 +++++++++++++++---- 4 files changed, 55 insertions(+), 13 deletions(-) diff --git a/Assets/LIN/Housing Copy.unity b/Assets/LIN/Housing Copy.unity index 79e679a6..891ccba6 100644 --- a/Assets/LIN/Housing Copy.unity +++ b/Assets/LIN/Housing Copy.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c65a5ea7da4e1894eda96621a1c1b460678427403a698c1494ddfc77a6afca2 -size 248403 +oid sha256:82ff164a01b71ac7df3c5f8ba896f35aca719fce1ba091b7258398f9cf0a615d +size 248419 diff --git a/Assets/LIN/Scripts/UI/HousingCanvasController.cs b/Assets/LIN/Scripts/UI/HousingCanvasController.cs index 0451bb5a..aa023719 100644 --- a/Assets/LIN/Scripts/UI/HousingCanvasController.cs +++ b/Assets/LIN/Scripts/UI/HousingCanvasController.cs @@ -47,9 +47,13 @@ public class HousingCanvasController : MonoBehaviour //상호작용 버튼 눌렀을 때 public void OnClickInteractionButton() { + //상호작용 별 행동 수행 OnInteractionButtonPressed?.Invoke(); OnInteractionButtonPressed = null; + + //상호작용 버튼과 텍스트 숨김 HideInteractionButton(); + interactionTextsController.InitInteractionTexts(); } #endregion diff --git a/Assets/LIN/Scripts/UI/HousingConstants.cs b/Assets/LIN/Scripts/UI/HousingConstants.cs index 6a418c66..a802046a 100644 --- a/Assets/LIN/Scripts/UI/HousingConstants.cs +++ b/Assets/LIN/Scripts/UI/HousingConstants.cs @@ -27,7 +27,8 @@ public static class HousingConstants { ActionType.Dungeon, new InteractionTexts("던전에 입장할까?","체력 3을 사용하고 3시간이 흐른다.", "던전에 갈 체력이 되지 않아..","던전 진입하는 중")}, { ActionType.Work, new InteractionTexts("출근한다.","체력 3을 사용하고 저녁 6시에나 돌아오겠지..", - "도저히 출근할 체력이 안되는걸..?","출근하는 중")} + "도저히 출근할 체력이 안되는걸..?","출근하는 중")}, + {ActionType.Eat, new InteractionTexts("식사를 하자","1시간 동안 체력 1을 회복한다.","밥 먹는 중")} }; #endregion diff --git a/Assets/LIN/Scripts/UI/InteractionAnimationPanelController.cs b/Assets/LIN/Scripts/UI/InteractionAnimationPanelController.cs index 27b7fd35..7f9ae100 100644 --- a/Assets/LIN/Scripts/UI/InteractionAnimationPanelController.cs +++ b/Assets/LIN/Scripts/UI/InteractionAnimationPanelController.cs @@ -12,13 +12,11 @@ public class InteractionAnimationPanelController : MonoBehaviour [SerializeField] private Image doingImage; [SerializeField] private TMP_Text doingText; [SerializeField] private Animator animator; + [SerializeField] private float animationDuration = 2.0f; private Coroutine _textAnimCoroutine; + private Coroutine _autoHideCoroutine; - // private void Start() - // { - // ShowAnimationPanel(LoadingState.Housework); - // } public void SetDoingText(string text) { doingText.text = text; @@ -26,11 +24,13 @@ public class InteractionAnimationPanelController : MonoBehaviour public void ShowAnimationPanel(ActionType actionType, string animationText) { + // 1) 패널 활성화 panel.SetActive(true); - if (_textAnimCoroutine != null) - { - StopCoroutine(_textAnimCoroutine); - } + // 2) 기존 코루틴 정리 + if (_textAnimCoroutine != null) StopCoroutine(_textAnimCoroutine); + if (_autoHideCoroutine != null) StopCoroutine(_autoHideCoroutine); + + // 3) 텍스트 및 애니메이션 세팅 doingText.text = animationText; switch (actionType) { @@ -39,7 +39,6 @@ public class InteractionAnimationPanelController : MonoBehaviour case ActionType.Work: break; case ActionType.Eat: - doingText.text = "식사하는 중"; break; case ActionType.Dungeon: break; @@ -48,6 +47,7 @@ public class InteractionAnimationPanelController : MonoBehaviour break; } _textAnimCoroutine = StartCoroutine(TextDotsAnimation()); + _autoHideCoroutine = StartCoroutine(AutoHidePanel()); } private IEnumerator TextDotsAnimation() @@ -63,7 +63,44 @@ public class InteractionAnimationPanelController : MonoBehaviour } yield return new WaitForSeconds(0.3f); } - _textAnimCoroutine = null; + } + + /// + /// 패널이 2초후 자동으로 닫히거나 터치시 닫히도록 합니다. + /// + /// + private IEnumerator AutoHidePanel() + { + float startTime = Time.time; + while (Time.time - startTime < animationDuration) + { + if (Input.touchCount > 0 || Input.GetMouseButtonDown(0)) + { + break; + } + yield return null; + } + + //패널 닫고 애니메이션 null처리 + HidePanel(); + _autoHideCoroutine = null; + } + + private void HidePanel() + { + panel.SetActive(false); + + if (_textAnimCoroutine != null) + { + StopCoroutine(_textAnimCoroutine); + _textAnimCoroutine = null; + } + + if (_autoHideCoroutine != null) + { + StopCoroutine(_autoHideCoroutine); + _autoHideCoroutine = null; + } } } \ No newline at end of file