我有个问题。我确实有 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.
代码太多,无法复制粘贴到这里,因为它与我的其他代码交织在一起。但是通过这种方式,您可以将任意数量的计时器用于您想要的任何内容,并根据需要暂停或启动它们。当然,您也可以通过简单的方式实现它。
- 2 回答
- 0 关注
- 194 浏览
添加回答
举报
0/150
提交
取消