我在尝试运行协同程序时遇到错误

时间:2017-03-23 23:58:24

标签: c# unity3d

我是C#和编程的新手,我无法让coroutines工作,我以前使用过基本版本并没有遇到任何问题我现在正试图制作非常相似的东西而不是任何成功。

来自团结的错误消息:

参数#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;
    }

}  
}

我将继续研究并更好地理解这一点但我无法弄清楚这一点,我们将不胜感激

1 个答案:

答案 0 :(得分:5)

你没有正确地调用你的协程

StartCoroutine(FireRate)();

应该像这样写

StartCoroutine(FireRate());

也可以使用它们的名称来调用协同程序,如此

StartCoroutine("FireRate");

您通常应该使用第一个变体。 the documentation of StartCoroutine

中解释了两者之间的差异
  

但是,使用字符串方法名称的StartCoroutine允许您将StopCoroutine与特定方法名称一起使用。缺点是字符串版本具有更高的运行时开销以启动协程,并且您只能传递一个参数。

您应该通过阅读the documentation here.

告知自己更多关于协同程序的信息