为了账号安全,请及时绑定邮箱和手机立即绑定

动态实例化 5 个表的 5 个计时器(UNITY 3D)

动态实例化 5 个表的 5 个计时器(UNITY 3D)

C#
斯蒂芬大帝 2021-10-09 14:03:53
我有个问题。我确实有 5 个表对象,它需要 5 个计时器,因此每个表有 1 个计时器我创建了一个名为的脚本 Table.cs表格.cspublic UILabel info_timer = null;我有我的主要脚本让我们称之为 Main.cs主文件const float gap = 20.0f;Table[] script_table;bool start_timer = false;int t_no;public static string Ctimer = "";void Update(){     int i = returnTableNo(t_no);     if (i != -1 && script_tables != null && script_tables[i] != null)     {           gap -= Time.deltaTime();           if(gap <= 0.0f)           {                script_table[i].info_timer =  Ctimer = "[808080]0[-]";           }           else           {                script_table[i].info_timer.text = gap.ToString("F0");           }      } } //someone will call this to make start_timer to true; void ActivateTimer(){     t.tableno = t_no;     start_timer = true; }//this line of code is for the table no == table noint returnTableNo(int table_no){   //table is equavalent to 5 for now    for (int i = 0; i < table.Count; i++)    {        if (t.table_no == table_no)        {            return i;        }    }    return -1;}现在我很困惑如何将每个计时器放在我拥有的每张桌子上。因为我遇到的情况是,例如表 1 正常运行,只有表 1 计时器将启动计时器,但发生的情况是,即使我的某些表没有运行,所有表计时器都在运行。当他的命令被调用时他们正在运行GCommand.start_:这是一张图纸,以便您可以形象化我正在尝试做的事情。
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

我为一个创建了一个 Clock 类和一个 ClockManager 类(单例)。这样我就可以创建计时器的实例,然后这些实例会自动添加到 ClockManager 的列表中。它使用 MonoBehavior 更新(只有一个用于所有事情!这对性能也更好。)为所有计时器调用“滴答”,每个计时器都可以有自己的触发间隔。无论是 0.0 秒(意味着每次更新)、每 0.1 秒、每 2.0 秒等。当它们被触发时,它们调用给定的 System.Action,它们将间隔值或它的倍数传递给它(如果多个间隔有在一个更新刻度内到达)。


用法很简单:


Clock idleClock = new Clock (this, DoIdleCheck, 0.5f);

// Parameters: 1. Reference to the object for automatic destruction.

// 2. The target method to invoke. 3. Interval.

代码太多,无法复制粘贴到这里,因为它与我的其他代码交织在一起。但是通过这种方式,您可以将任意数量的计时器用于您想要的任何内容,并根据需要暂停或启动它们。当然,您也可以通过简单的方式实现它。


查看完整回答
反对 回复 2021-10-09
  • 2 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信