_xiaofang/xiaofang/Assets/Script/UI/ZZZZZZ/Chooselitem8.cs
2024-12-26 23:18:09 +08:00

93 lines
2.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Chooselitem8 : MonoBehaviour
{
public GameObject prefab;
public Transform PrefabTransform;
public Text text;
public static Chooselitem8 Instance;
public JSONReader JSONReader;
public Text Time;// 要改变颜色的Text组件
private bool isRed = false; // 当前颜色是否是红色
private float timeInSeconds; // 当前时间,单位为秒
public GameObject Timeobject;
private bool isRunning = true; // 控制计时是否继续运行
public void Start()
{
Instance = this;
InvokeRepeating(nameof(UpdateTimeDisplay), 0f, 1f);
}
public void CreateItem(int ID)
{
GameObject newitem = Instantiate(prefab, PrefabTransform);
foreach (var item in JSONReader.LanguageDictionary)
{
Language languageData = item.Value;
if (languageData.ID == ID)
{
text.text = languageData.Text;
}
}
}
private void UpdateTimeDisplay()
{
if (!isRunning) return;
// 将时间格式化为 "MM:SS"
string formattedTime = FormatTime(timeInSeconds);
if (Time != null)
{
Time.text = formattedTime;
}
// 增加时间(每秒)
timeInSeconds++;
// 检查是否达到10秒
if (timeInSeconds >= 12)
{
isRunning = false; // 停止计时
CancelInvoke(nameof(UpdateTimeDisplay)); // 停止Invoke调用
Timeobject.SetActive(false);
}
}
public void ColorText()
{
StartCoroutine(ChangeTextColor());
}
/// <summary>
/// 协程每秒切换Text的颜色
/// </summary>
private IEnumerator ChangeTextColor()
{
while (true)
{
if (Time != null)
{
// 切换颜色
Time.color = isRed ? Color.white : Color.red;
isRed = !isRed;
}
// 等待1秒
yield return new WaitForSeconds(1f);
}
}
/// <summary>
/// 格式化时间为 "MM:SS"
/// </summary>
/// <param name="time">时间(秒)</param>
/// <returns>格式化后的时间字符串</returns>
private string FormatTime(float time)
{
int minutes = Mathf.FloorToInt(time / 60); // 分钟
int seconds = Mathf.FloorToInt(time % 60); // 秒
return $"{minutes:00}:{seconds:00}";
}
}