Как снова запустить IEnumerator после SetActive(false);C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как снова запустить IEnumerator после SetActive(false);

Сообщение Anonymous »


Я пытаюсь создать функцию изображения в своей игре и хочу, чтобы рамка изображения исчезла через пару секунд. После этого, когда я попытался сделать снимок еще раз, это не сработало. Я новичок в C# и буду рад помощи ^^;

После нажатия пробела появится картинка, а через несколько секунд она исчезнет. Если вы нажмете пробел еще раз, действие повторится. Действие не повторяется.

Вот код:
с использованием System.Collections; использование UnityEngine; использование UnityEngine.UI; использование UnityEngine.Animations; общедоступный класс PhotoCapture: MonoBehaviour { [Заголовок("Фотограф")] [SerializeField] частное изображение photoDisplayArea; [SerializeField] частный GameObject photoFrame; [Заголовок("Эффект вспышки")] [SerializeField] частный GameObject cameraFlash; [SerializeField] частное плавающее flashTime; [Заголовок («Эффект фотофейдера»)] [SerializeField] частный аниматор fadingAnimation; частный ScreenCapture Texture2D; частный просмотр фотографий; частная пустота Старт() { screenCapture = новая текстура2D(Screen.width, Screen.height, TextureFormat.RGB24, false); } частное недействительное обновление() { если (Input.GetKeyDown(KeyCode.Space)) { если (!viewPhoto) { StartCoroutine(CapturePhoto()); } } } IEnumerator CapturePhoto() { // Пользовательский интерфейс камеры установил ложь просмотрФото = правда; доходность возвращает новый WaitForEndOfFrame(); Rect RegionToRead = новый Rect(0, 0, Screen.width, Screen.height); screenCapture.ReadPixels(regionToRead, 0, 0, false); ScreenCapture.Применить(); ПоказатьФото(); } частная пустота ShowPhoto() { //дофлэш Sprite photoSprite = Sprite.Create(screenCapture, new Rect(0.0f, 0.0f, screenCapture.width, screenCapture.height), новый Vector2(0.5f, 0.5f), 100.0f); photoDisplayArea.sprite = photoSprite; photoFrame.SetActive(истина); fadingAnimation.Play("photoFade"); StartCoroutine(CameraFlashEffect()); доходность возврата новых WaitForSeconds (2); photoFrame.SetActive(ложь); } IEnumerator CameraFlashEffect() { //воспроизводим аудио cameraFlash.SetActive(истина); доходность возвращает новый WaitForSeconds(flashTime); cameraFlash.SetActive(ложь); } недействительный УдалитьФото() { просмотрФото = ложь; photoFrame.SetActive(ложь); // пользовательский интерфейс камеры истина } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»