50 lines
1.9 KiB
C#
50 lines
1.9 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
|
|
[RequireComponent(typeof(AudioSource))]
|
|
public class TVController : MonoBehaviour
|
|
{
|
|
[Header("Компоненты")]
|
|
[Tooltip("Renderer объекта, представляющего экран телевизора.")]
|
|
[SerializeField] private Renderer _tvScreenRenderer;
|
|
[SerializeField] private AudioSource _audioSource;
|
|
|
|
[Header("Настройки")]
|
|
[Tooltip("Звук, который проигрывается при включенном телевизоре.")]
|
|
[SerializeField] private AudioClip _tvSound;
|
|
|
|
[Tooltip("Через сколько секунд после включения телевизор выключится.")]
|
|
[SerializeField] private float _onDuration = 5.0f;
|
|
|
|
private void Awake()
|
|
{
|
|
// Убедимся, что экран и звук выключены на старте
|
|
if (_tvScreenRenderer != null)
|
|
{
|
|
_tvScreenRenderer.enabled = false;
|
|
}
|
|
_audioSource = GetComponent<AudioSource>();
|
|
}
|
|
|
|
// Публичный метод для включения телевизора
|
|
public void TurnOnAndOffAfterDelay()
|
|
{
|
|
StartCoroutine(TVActivationCoroutine());
|
|
}
|
|
|
|
private IEnumerator TVActivationCoroutine()
|
|
{
|
|
// Фаза включения
|
|
Debug.Log("Телевизор включается...");
|
|
_tvScreenRenderer.enabled = true;
|
|
_audioSource.PlayOneShot(_tvSound);
|
|
|
|
// Ожидание
|
|
yield return new WaitForSeconds(_onDuration);
|
|
|
|
// Фаза выключения
|
|
Debug.Log("Телевизор выключается...");
|
|
_tvScreenRenderer.enabled = false;
|
|
// Звук остановится сам, так как он OneShot. Если звук зациклен, нужно использовать _audioSource.Stop().
|
|
}
|
|
} |