Degulleo3D/Assets/InteractionPanelController.cs
Lim0_C d00d38ae3c DEG-84 [Feat] 컷신(로딩) UI 일부 구현
로딩 상태 별로 분기하는 구조 구현.
세탁 이미지 및 애니메이션만 구현.
2025-04-23 16:09:48 +09:00

83 lines
2.0 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
//로딩 상황
public enum LoadingState
{
Housework,
Go2Work,
LeaveWork,
Meal,
Dungeon
}
//집안일 목록
public enum HouseworkState
{
Laundry,
Cleaning,
}
public class InteractionPanelController : MonoBehaviour
{
[SerializeField] private Image doingImage;
[SerializeField] private TMP_Text doingText;
[SerializeField] private Animator animator;
private Coroutine _textAnimCoroutine;
private void Start()
{
Init(LoadingState.Housework);
}
private void Init(LoadingState state)
{
if (_textAnimCoroutine != null)
{
StopCoroutine(_textAnimCoroutine);
}
switch (state)
{
case LoadingState.Housework:
doingText.text = "세탁하는 중";
animator.Play("Laundry");
break;
case LoadingState.Go2Work:
doingText.text = "출근하는 중";
break;
case LoadingState.LeaveWork:
doingText.text = "퇴근하는 중";
break;
case LoadingState.Meal:
doingText.text = "식사하는 중";
break;
case LoadingState.Dungeon:
doingText.text = "던전 진입하는 중";
break;
}
_textAnimCoroutine = StartCoroutine(TextAnimation());
}
private IEnumerator TextAnimation()
{
var tempText = doingText.text;
float startTime = Time.time;
while (Time.time - startTime < 3)
{
for (int i = 0; i < 3; i++)
{
yield return new WaitForSeconds(0.3f);
doingText.text = tempText + new string('.', i + 1);
}
yield return new WaitForSeconds(0.3f);
}
_textAnimCoroutine = null;
}
}