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

我有个问题。我确实有 5 个表对象,它需要 5 个计时器,因此每个表有 1 个计时器


我创建了一个名为的脚本 Table.cs


表格.cs


public 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 no

int 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_:

这是一张图纸,以便您可以形象化我正在尝试做的事情。

http://img4.mukewang.com/616130e700015b1703450259.jpg

斯蒂芬大帝
浏览 195回答 2
2回答

慕的地6264312

我为一个创建了一个 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.代码太多,无法复制粘贴到这里,因为它与我的其他代码交织在一起。但是通过这种方式,您可以将任意数量的计时器用于您想要的任何内容,并根据需要暂停或启动它们。当然,您也可以通过简单的方式实现它。
打开App,查看更多内容
随时随地看视频慕课网APP