单击某些对象后,计时器将无法继续工作(C#UNITY)

时间:2018-09-07 09:01:55

标签: c# unity3d

我有一个大厅,这是它的样子

enter image description here

现在,大厅中的这5个对象每个对象都有自己的计时器,并且可以正常工作。所以这就是我所做的。

Table.cs

public bool IsActive { get; private set; }

private float rTimer;

// Use this for initialization
void Start(){}

public IEnumerator Init()
{
    if (info_timer != null)
    {
        info_timer.text = timer = "[808080]0[-]";
    }
    yield return null;
}

public void ActivateTimer(bool activate = true)
{
    //if activate is true, then reset this timer to default.
    if (activate)
        rTimer = tzPlayInfo.Instance.gap;
        rTimer /= 1000.0f;

    IsActive = activate;
}

public void UpdateTimer(float deltaTime)
{
    //we can even check to see if the table is active or the timer has already timed out.
    if (!IsActive) return;

    rTimer -= deltaTime;

    if (rTimer <= 0.0f)
    {
        info_timer.text = timer = "[808080]0[-]";
        IsActive = false;
    }
    else
    {
        info_timer.text = rTimer.ToString("F0");
    }
}

现在位于 Main.cs 上,其中驱动所有更新。

public class Main : MonoBehaviour
{
  const float gap = 20.0f;
  Table[] script_table;
  bool start_timer = false;
  int t_no;
  public static string Ctimer = "";

  public void Update()
  {
     for ( int i = 0; i < script_table.Length; i++ )
     script_table[i].UpdateTimer(Time.deltaTime);
   }

   // This method can now be used to Activate or De-Activate a timer.
   public void ActivateTimer ( int tableNumber, bool activate = true )
   {
      script_table[tableNumber ].ActivateTimer( activate );
   } 
 } 

现在我的问题是,当我单击此表/对象时,它将进入内部并创建另一个这样的房间

enter image description here

但是问题是我无法获得我单击的那个对象的计时器的数据

例如,如果我单击第一个表并且它的计时器为15秒,那么我必须获取15秒的数据才能在房间中显示它。

1 个答案:

答案 0 :(得分:1)

似乎您需要访问单击的对象。您可以找到带有其名称或特定标签的对象。

查找名称为:

的对象
// This returns the GameObject named Hand.
    GameObject hand = GameObject.Find("Hand");

GameObject.Find In Unity Manual

或者您可以在检查器中为其设置标签,并通过标签找到它:

GameObject respawn = GameObject.FindWithTag("Respawn");

GameObject.FindWithTag In Unity Manual

然后,您可以像这样简单地访问其附带的脚本:

gameObject.GetComponent<Table>();