您不能調用來調用與參數。這應該工作,如果你從您的拍攝功能刪除參數。
Invoke("Shoot", 3f);
然後你的拍攝功能應該是這樣的
void Shoot(){
}
,而不是
void Shoot(string...parameter){
}
您的評論後,有另一種方式來做到這一點。這需要「協同程序」。
IEnumerator Shoot(Collider currentTarget, float delayTime)
{
yield return new WaitForSeconds(delayTime);
//You can then put your code below
//......your code
}
你不能直接調用它。例如,你不能這樣做: Shoot(currentTarget, 1f)
;
如果你不喜歡使用StartCoroutine您必須使用**StartCoroutine**(Shoot(currentTarget, 1f));
void Start()
{
//Call your function
StartCoroutine(Shoot(currentTarget, 1f));
}
而且,那麼你可以調用內的另一個功能正常的協程功能。我想你可能會喜歡這種方法使整個代碼看起來應該像下面的東西:
//Changed the name to **ShootIEnum**
IEnumerator ShootIEnum(Collider currentTarget, float delayTime=0f)
{
yield return new WaitForSeconds(delayTime);
//You can then put your code below
//......your code
}
//You call this function
void Shoot(Collider currentTarget, float delayTime=0f)
{
StartCoroutine(ShootIEnum(currentTarget, 1f));
}
void Update()
{
if (currentTarget != null)
{
Shoot(currentTarget, 0.3f);
}
}
現在,任何時候你想打電話拍攝,你可以現在沒有問題致電Shoot(currentTarget, 1f);
。
什麼語言? C#或Javascript?拍攝功能在哪裏?在另一班還是同班? – Programmer
C#,在同一個班級 – David
已更新我的回答 – Programmer