using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Restaurant : MonoBehaviour { public Transform restaurantSwitch; private bool isSwitchOn = false; public Transform mainDoor; public Transform[] guestNpc; public GameObject[] mainLight; public void RestaurantSwitchOnOff() { isSwitchOn = !isSwitchOn; if (isSwitchOn) { restaurantSwitch.rotation *= Quaternion.Euler(0, 0, -90); foreach (var light in mainLight) { light.SetActive(true); } var door = mainDoor.GetComponent(); door._animator.SetBool("Open", true); StartCoroutine(ActivateNPCs()); } else { restaurantSwitch.rotation *= Quaternion.Euler(0, 0, 90); foreach (var light in mainLight) { light.SetActive(false); } var door = mainDoor.GetComponent(); door._animator.SetBool("Open", false); StopAllCoroutines(); } } IEnumerator ActivateNPCs() { foreach (var npc in guestNpc) { if (!isSwitchOn) // 스위치가 꺼지면 코루틴을 즉시 종료 yield break; if (!npc.gameObject.activeInHierarchy) // NPC가 비활성화 상태인 경우만 { var waitTime = UnityEngine.Random.Range(3, 11); // 1초에서 10초 사이의 랜덤 대기 시간 yield return new WaitForSeconds(waitTime); // 랜덤 대기 if (!isSwitchOn) // 대기 후 스위치 상태 다시 확인 yield break; npc.gameObject.SetActive(true); // NPC 활성화 } } } }