Этот код показывает две ошибки на старой версии юн...

Tạo vào: 8 tháng 8, 2026

Trả lời bằng GPT-5.6 Thinking bởi Chat01

Câu hỏi

Этот код показывает две ошибки на старой версии юнити
using System.Collections;
using TMPro;
using UnityEngine;

public class TimedMessage : MonoBehaviour
{
[Header("UI")]
public TMP_Text messageText;

text
[Header("Настройки")] public string message = "Прошло 5 минут!"; public float interval = 300f; // 300 секунд = 5 минут public float displayDuration = 5f; // Сколько секунд показывать сообщение private void Start() { // Сначала скрываем текст messageText.gameObject.SetActive(false); StartCoroutine(MessageTimer()); } private IEnumerator MessageTimer() { while (true) { // Ждём 5 минут yield return new WaitForSecondsRealtime(interval); // Показываем сообщение messageText.text = message; messageText.gameObject.SetActive(true); // Держим сообщение на экране yield return new WaitForSecondsRealtime(displayDuration); // Скрываем messageText.gameObject.SetActive(false); } }

}

Suy nghĩ

Worked for 4s

Trả lời

Скорее всего на старой версии Unity ошибки возникают из-за TextMeshPro (TMPro) и WaitForSecondsRealtime. Для старых версий проще использовать обычный UI.Text и WaitForSeconds.

Попробуй этот вариант:

csharp
using System.Collections; using UnityEngine; using UnityEngine.UI; public class TimedMessage : MonoBehaviour { [Header("UI")] public Text messageText; [Header("Settings")] public string message = "Прошло 5 минут!"; public float interval = 300f; public float displayDuration = 5f; void Start() { if (messageText != null) { messageText.gameObject.SetActive(false); } StartCoroutine(MessageTimer()); } IEnumerator MessageTimer() { while (true) { // Ждём 5 минут yield return new WaitForSeconds(interval); if (messageText != null) { messageText.text = message; messageText.gameObject.SetActive(true); } // Показываем сообщение 5 секунд yield return new WaitForSeconds(displayDuration); if (messageText != null) { messageText.gameObject.SetActive(false); } } } }

В Unity теперь нужно создать UI → Text, а не TextMeshPro, и перетащить этот объект в поле Message Text у скрипта.

Разница такая: TMP_TextText, using TMPro;using UnityEngine.UI;, а WaitForSecondsRealtime(...)WaitForSeconds(...).

Если пришлёшь скриншот двух ошибок или их текст и скажешь версию Unity, я смогу исправить код именно под неё.

Chia sẻ Q&A này