我有一个大厅,这是它的样子
现在,大厅中的这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 );
}
}
现在我的问题是,当我单击此表/对象时,它将进入内部并创建另一个这样的房间
但是问题是我无法获得我单击的那个对象的计时器的数据
例如,如果我单击第一个表并且它的计时器为15秒,那么我必须获取15秒的数据才能在房间中显示它。
答案 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>();