2017-03-23 146 views
-3

我是C#和編程的新手,而且在協同工作時遇到了困難,我之前使用過基本協議,並且沒有任何問題,現在我正試圖做一些非常相似的事情,但沒有任何成功。從統一性當我試圖運行協程時,我總是收到錯誤

錯誤消息:

參數#1' cannot convert方法組 '表達鍵入`System.Collections.IEnumerator'

最好重載方法用於`UnityEngine.MonoBehaviour.StartCoroutine(匹配System.Collections中。 IEnumerator的)」有一些無效參數

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using System; 

public class Fire : MonoBehaviour 
{ 
public Transform firePos; 
public GameObject bullet; 
public bool fireCheck; 
public float spawnTime; 

IEnumerator FireRate() 
{ 
    while(fireCheck == true) 
    { 
     yield return new WaitForSeconds(spawnTime); 
     Instantiate(bullet, firePos.position, firePos.rotation); 
    } 
} 

void Start() 
{ 
    spawnTime = 4f; 
    StartCoroutine(FireRate)(); 
} 

void Update() 
{ 
    if (Input.GetKey(KeyCode.Space)) 
    { 
     fireCheck = true; 
    } 

} 
} 

我會繼續研究和更好地理解這一點,但我實在不明白這一點,修復,將不勝感激

+2

這'StartCoroutine(FireRate)(告知自己更多的協同程序);'需要是這樣的:'StartCoroutine(FireRate());' – DavidG

回答

5

你不打電話給你正確協程本

StartCoroutine(FireRate)(); 

應該這樣寫

StartCoroutine(FireRate()); 

協同程序也可以使用自己的名字稱爲串這樣

StartCoroutine("FireRate"); 

你通常應該使用第一個變體。在兩者之間的差異不過StartCoroutine使用字符串方法名允許您使用StopCoroutine用特定的方法名the documentation of StartCoroutine

解釋。缺點是字符串版本有更高的運行時間開銷來啓動協程,並且只能傳遞一個參數。

你或許應該通過閱讀the documentation here.

+0

乾杯,我不我知道我沒有看到我以前做過正確的事。 – OmBiEaTeR

+0

@OmBiEaTeR有時我們所有人都可以碰到它。 – CNuts

相關問題